カラム幅の自動調整と任意の調整両方を有効にする


■DataGridViewのカラム幅調整に関するTipsです。 DataGridViewコントロールのAutoSizeColumnsModeプロパティにDataGridViewAutoSizeColumnsModeの値をDisplayedCellsやAllCellsに設定すると 手早くUIを整えることが出来るのですが、今度はユーザーが任意にカラム幅を調整することができなくなります。これを簡単なコードで解消する方法を下記に

 With DataGridView1
  .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
   For Each objcol As DataGridViewColumn In .Columns
    objcol.Width = objcol.Width
   Next
  .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
 End With
実は、一瞬、AutoSizeColumnsModeを任意の値(DisplayedCells、AllCells)に変更してから、カラム幅を取得して、再びNoneに戻す、だけです。。。 一見、矛盾したコードに見えますが、これが正常に動くのですね・・・ 沢山のカラムを持ったDataGridViewを、それぞれ調整するは大変な作業ですよね? そこで、このAutoSizeColumnsModeプロパティで調整するわけですが・・・

余談ですが、多くのレコード数を抱えたDataGridViewでは、AutoSizeColumnsModeプロパティをAllCells等、 全てのレコードを対象に設定すると著しくパフォーマンスが落ちたりします。 ニーズやデータ量に合わせて使い分けた方が良さそうですね。

TOP ▲