DataGridViewにColumnを追加する手順の解説とサンプルコードです。Columnオブジェクトを生成し、ヘッダーテキスト・列の表示非表示・編集可否・列幅の変更可否を設定してDataGridViewに追加します。
サンプルコード
解説はサンプルコードの後に示します。-
C#
// 1.DataGridViewColumnオブジェクトを生成 DataGridViewTextBoxColumn textColumn = new DataGridViewTextBoxColumn(); // 2.セルに表示するデータソースの指定(DataRowの列名や、独自クラスのプロパティ名を指定) textColumn.DataPropertyName = "col1"; // 3.ヘッダーのテキスト textColumn.HeaderText = "データ"; // 4.列の表示/非表示 textColumn.Visible = true; // 5.列幅 textColumn.Width = 200; // 6.読み取り専用 textColumn.ReadOnly = false; // 7.ユーザーによる列幅の変更可否 textColumn.Resizable = DataGridViewTriState.True; // 8.列を追加 this.dataGridView1.Columns.Add(textColumn); // 追加する列分、 1. ~ 8. を繰り返す // ここから、データグリッドビューの設定 // 列の自動生成をオフに this.dataGridView1.AutoGenerateColumns = false; // データグリッドビューにデータを渡す DataTable dataTable = this.MakeDataTable(); this.dataGridView1.DataSource = dataTable;
-
VB.NET
' 1.DataGridViewColumnオブジェクトを生成 Dim textColumn As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() ' 2.セルに表示するデータソースの指定(DataRowの列名や、独自クラスのプロパティ名を指定) textColumn.DataPropertyName = "col1" ' 3.ヘッダーのテキスト textColumn.HeaderText = "データ" ' 4.列の表示/非表示 textColumn.Visible = True ' 5.列幅 textColumn.Width = 200 ' 6.読み取り専用 textColumn.ReadOnly = False ' 7.ユーザーによる列幅の変更可否 textColumn.Resizable = DataGridViewTriState.True ' 8.列を追加 Me.DataGridView1.Columns.Add(textColumn) ' ここから、データグリッドビューの設定 ' 9.列の自動生成をオフに Me.DataGridView1.AutoGenerateColumns = False ' データグリッドビューにデータを渡す Dim dataTable As DataTable = Me.MakeDataTable() Me.DataGridView1.DataSource = dataTable
解説
-
DataGridViewColumnオブジェクトを生成
作成したいセルの表示内容に合わせて、DataGridViewColumnオブジェクトを生成します。 標準で用意されているDataGridViewColumnオブジェクトは次のとおりです。DataGridViewColumnオブジェクト セルの表示内容 DataGridViewButtonColumn ボタン DataGridViewCheckBoxColumn チェックボックス DataGridViewComboBoxColumn コンボボックス DataGridViewImageColumn 画像 DataGridViewLinkColumn ハイパーリンク DataGridViewTextBoxColumn テキストボックス -
セルに表示するデータソースの指定
DataTableの内容を表示するのであればDataRowの列名(テーブルの列名)、独自クラスのリストであればプロパティ名を指定します。 -
ヘッダーのテキスト
ヘッダーに表示する文字列を指定します。列幅が狭いと自動改行されます。 改行を防ぎたい場合はデータグリッドビューのヘッダを改行しない方法を参考にしてください。 -
列の表示/非表示
Visibleプロパティをfalseにすると列が非表示になります。画面制御用の隠し項目や、 オプション機能でユーザーに表示列を選択させる等の使いみちがあります。 -
列幅
列幅をピクセル単位で指定します。列幅の合計がデータグリッドビューの幅を超えると横スクロールバーが表示されます。 -
読み取り専用
ReadOnlyプロパティをtrueにした列は読み取り専用となり、入力できなくなります。注意:ReadOnlyプロパティをfalseにしても、データグリッドビューのReadOnlyプロパティがtrueになっていると読み取り専用になります。列のReadOnlyプロパティをfalseにする場合はデータグリッドビューのReadOnlyプロパティもfalseにします。
-
ユーザーによる列幅の変更可否
列と列の間にある境界線をドラッグして列幅を変更できるかを指定します。 ResizableプロパティにDataGridViewTriState.Trueを指定すると変更可、DataGridViewTriState.Falseを指定すると変更不可です。 -
列を追加
DataGridViewに列を追加します。列を複数追加する場合は 1. ~ 8. を繰り返します。このサンプルでは1列しか追加されません。 -
列の自動生成をオフに
AutoGenerateColumnsプロパティがtrueのままではデータソースを元に列が自動生成され、余計な列が表示されてしまいます。 falseをセットして列の自動生成をオフにし、コードで追加した列のみが表示されるようにしておきます。
サンプルコードのダウンロード
サンプルコードの実行には Microsoft Visual Studio 2008 以上のバージョンが必要です。 2008以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。検証環境
- Microsoft Visual Studio 2008 Version 9.0.30729.4462 QFE Edition: Professional
- Microsoft .NET Framework Version 3.5 SP1
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))