DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DataGridViewに列を手動で追加する

注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。

通常は、DataGridViewのDataSourceプロパティにデータソースを設定すると、DataGridViewに自動的に列が追加されます。しかし、指定した列だけを追加したい場合や、勝手に追加されるDataGridViewTextBoxColumnではなく、DataGridViewComboBoxColumnなどを使用したいという場合もあります。このような場合は、DataGridView.AutoGenerateColumnsプロパティをFalseにすることにより、列が自動的に作成されないようにして、手動で列を追加することができます。

手動で列を追加する手順を簡単にまとめると、次のようになります。

  1. DataGridViewのAutoGenerateColumnsプロパティをFalseにする。
  2. DataGridViewのDataSourceプロパティにデータソースを設定する。
  3. 追加する列クラス(DataGridViewTextBoxColumnやDataGridViewComboBoxColumnクラスなど、DataGridViewColumnクラスの派生クラス)のインスタンスを作成する。
  4. DataGridViewColumn.DataPropertyNameプロパティに、その列にバインドするデータベースの列の名前(または、データソースプロパティの名前)を設定する(その列を非バインド列とする場合は、必要なし)。
  5. 必要ならば、DataGridViewColumn.Nameプロパティなど、適当な設定をしておく。
  6. DataGridViewのColumns.Addにより、作成した列をDataGridViewに追加する。

以下の例では、DataGridViewのDataSourceプロパティにデータソースを設定した時に列が自動的に追加されないようにして、その後"Column1"列を手動で追加しています。なお、BindingSource1にはすでにデータソースが設定されているものとします。

VB.NET
コードを隠すコードを選択
'列が自動的に作成されないようにする
DataGridView1.AutoGenerateColumns = False
'データソースを設定する
DataGridView1.DataSource = BindingSource1

'DataGridViewTextBoxColumn列を作成する
Dim textColumn As New DataGridViewTextBoxColumn()
'データソースの"Column1"をバインドする
textColumn.DataPropertyName = "Column1"
'名前とヘッダーを設定する
textColumn.Name = "Column1"
textColumn.HeaderText = "Column1"
'列を追加する
DataGridView1.Columns.Add(textColumn)
C#
コードを隠すコードを選択
//列が自動的に作成されないようにする
DataGridView1.AutoGenerateColumns = false;
//データソースを設定する
DataGridView1.DataSource = BindingSource1;

//DataGridViewTextBoxColumn列を作成する
DataGridViewTextBoxColumn textColumn = new DataGridViewTextBoxColumn();
//データソースの"Column1"をバインドする
textColumn.DataPropertyName = "Column1";
//名前とヘッダーを設定する
textColumn.Name = "Column1";
textColumn.HeaderText = "Column1";
//列を追加する
DataGridView1.Columns.Add(textColumn);

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。