DataGridViewの列の幅や行の高さを自動的に調整する注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 ここではDataGridViewの列の幅や行の高さを、セルやヘッダーの内容に合わせて(通常はその内容がすべて表示されるように)自動的に調整する方法を紹介します。 内容が変更された時に自動的に調整されるようにする列の幅の自動調整DataGridViewの列の幅が自動的に調整されるようにするには、DataGridView.AutoSizeColumnsModeプロパティを使用します。 例えば、ヘッダーとすべてのセルの内容に合わせて列の幅と行の高さが自動調整されるようにするには、次のようにします。このようにすると、セルの内容が変更された場合でもその内容に合わせて自動調整されるようになります。 [VB.NET] 'ヘッダーとすべてのセルの内容に合わせて、列の幅を自動調整する DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 'ヘッダーとすべてのセルの内容に合わせて、行の高さを自動調整する DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells [C#] //ヘッダーとすべてのセルの内容に合わせて、列の幅を自動調整する DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; //ヘッダーとすべてのセルの内容に合わせて、行の高さを自動調整する DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; AutoSizeColumnsModeプロパティに設定できるDataGridViewAutoSizeColumnsMode列挙値とその意味を以下に示します(MSDN「DataGridViewAutoSizeColumnsMode 列挙体」からの抜粋です)。
補足:このような方法を使用しているにもかかわらず、セルの内容を変更したときに自動調整されないという場合は、セルのUpdateCellValueメソッドを呼び出してみてください。 行の高さの自動調整行の高さの自動調整は、AutoSizeRowsModeプロパティにより行います。AutoSizeRowsModeプロパティに指定できるDataGridViewAutoSizeRowsMode列挙値は、次のようなものです(MSDN「DataGridViewAutoSizeRowsMode 列挙体からの抜粋です)」。
列ヘッダーの高さや行ヘッダーの幅の自動調整列ヘッダーの高さが自動調整されるようにするには、DataGridViewオブジェクトのColumnHeadersHeightSizeModeプロパティをDataGridViewColumnHeadersHeightSizeMode.AutoSizeに設定します。 行ヘッダーの幅が自動調整されるようにするには、RowHeadersWidthSizeModeプロパティをDataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders(すべての行ヘッダーの内容に合わせて調整される)かAutoSizeToDisplayedHeaders(現在表示されている行ヘッダーの内容に合わせて調整される)かAutoSizeToFirstHeader(はじめの行ヘッダーの内容に合わせて調整される)に設定します。 [VB.NET] '列ヘッダーの高さが自動調整されるようにする DataGridView1.ColumnHeadersHeightSizeMode = _ DataGridViewColumnHeadersHeightSizeMode.AutoSize '行ヘッダーの幅が自動調整されるようにする DataGridView1.RowHeadersWidthSizeMode = _ DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders [C#] //列ヘッダーの高さが自動調整されるようにする DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; //行ヘッダーの幅が自動調整されるようにする DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; パフォーマンスについてAutoSizeColumnsModeやAutoSizeRowsModeプロパティによってセルの内容が変更されたときに列や行が自動調整されるようになっていると、自動調整が頻繁に行われ、パフォーマンスが低下します。特に行や列の数が多い場合は、自動調整に時間がかかってしまいます。 このような場合は、AllCellsの代わりにDisplayedCellsを指定すると、現在表示されているセルの内容だけを対象にして自動調整されるようになりますので、パフォーマンスが向上します。または、自動調整する回数を減らすために、後述する方法により適当なタイミングで手動で自動調整する方法もあります。 指定した列だけを自動調整する指定した列だけを自動調整するには、その列(DataGridViewColumnオブジェクト)のAutoSizeModeプロパティを使用します。使い方はAutoSizeColumnsModeプロパティとほぼ同じです。 はじめの列の自動調整方法だけをDisplayedCellsに変更する例を示します。
[VB.NET]
'はじめの列の幅を自動調整する
DataGridView1.Columns(0).AutoSizeMode = _
DataGridViewAutoSizeColumnMode.DisplayedCells
[C#]
//はじめの列の幅を自動調整する
DataGridView1.Columns[0].AutoSizeMode =
DataGridViewAutoSizeColumnMode.DisplayedCells;
AutoSizeColumnsModeプロパティとの違いは、AutoSizeModeプロパティにはNotSetを設定できるという点です。NotSetを設定すると、列の自動調整の設定は、DataGridView.AutoSizeColumnsModeプロパティの設定を継承します。AutoSizeModeプロパティにNotSetを設定してAutoSizeColumnsModeプロパティの設定を継承した時、その継承された設定を取得するには、DataGridViewColumn.InheritedAutoSizeModeプロパティを使用します。 任意のタイミングで自動調整する上記のようにセルの内容が変更されるたびに自動調整が行われるのではなく、任意のタイミングで自動調整を一度だけ行う方法もあります。 列の幅の自動調整DataGridView内のすべての列を一度だけ自動調整するには、DataGridViewオブジェクトのAutoResizeColumnsメソッドを呼び出します。AutoResizeColumnsメソッドには、AutoSizeColumnsModeプロパティと同様、DataGridViewAutoSizeColumnsMode列挙値によって自動調整の方法を指定します。 また、指定した列だけを自動調整するには、DataGridViewオブジェクトのAutoResizeColumnメソッドを呼び出します。 [VB.NET] 'DataGridView1のすべての列の幅を自動調整する DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells) 'DataGridView1のはじめの列の幅を自動調整する DataGridView1.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.AllCells) [C#] //DataGridView1のすべての列の幅を自動調整する DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); //DataGridView1のはじめの列の幅を自動調整する DataGridView1.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.AllCells); 補足:上記の例のように、AutoResizeColumnsやAutoResizeColumnでDataGridViewAutoSizeColumnMode.AllCellsを指定する場合は、パラメータを省略できます。 行の高さの自動調整同様に行の場合は、AutoResizeRowsメソッドですべての行の、AutoResizeRowメソッドで指定した行の高さの自動調整を実行します。 [VB.NET] 'DataGridView1のすべての行の高さを自動調整する DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells) 'DataGridView1のはじめの行の高さを自動調整する DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells) [C#] //DataGridView1のすべての行の高さを自動調整する DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells); //DataGridView1のはじめの行の高さを自動調整する DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells); 補足:上記の例のように、AutoResizeRowsやAutoResizeRowでDataGridViewAutoSizeRowMode.AllCellsを指定する場合は、パラメータを省略できます。 列ヘッダーの高さや行ヘッダーの幅の自動調整列ヘッダーの高さや行ヘッダーの幅の自動調整は、DataGridView.AutoResizeColumnHeadersHeightメソッドとAutoResizeRowHeadersWidthメソッドで行います。 [VB.NET] 'すべての列ヘッダーの高さを自動調整する DataGridView1.AutoResizeColumnHeadersHeight() '行ヘッダーの幅を自動調整する DataGridView1.AutoResizeRowHeadersWidth( _ DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) [C#] //すべての列ヘッダーの高さを自動調整する DataGridView1.AutoResizeColumnHeadersHeight(); //行ヘッダーの幅を自動調整する DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders); |
|
Copyright 2002-2008 DOBON!. All rights reserved.
|