コンボボックスの列のプロパティDefaultCellStyle.NullValue
とDefaultCellStyle.DataSourceNullValue
を使用できます。
このhereには、非常に包括的なMSDNの記事があります。
私も次のコード例を与えてくれた:上記のコードで注意すべき
// Let's say I have this list of cars I want to add to my datagridview
List<Car> cars = new List<Car>();
cars.Add(new Car() { Index = 0, Make = "Ford" });
cars.Add(new Car() { Index = 1, Make = "Chevvy" });
cars.Add(new Car() { Index = 2, Make = "Toyota" });
// I create the column, setting all the various properties
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = cars;
col.Name = "Cars";
col.DisplayMember = "Make";
col.HeaderText = "Car";
col.ValueMember = "Index";
col.DataPropertyName = "Car";
// As well as standard properties for a combobox column I set these two:
col.DefaultCellStyle.NullValue = cars[0].Make;
col.DefaultCellStyle.DataSourceNullValue = cars[0].Index;
dataGridView1.Columns.Add(col);
dataGridView1.DataSource = dt;
ことの一つは、私はDataGridViewののデータソースのプロパティに結合できるようにDataPropertyName
を設定していますということです。
もし私がそれをやっていなかったら、ユーザーが何も選択していないときにコンボボックスの列にアクセスするときに追加のロジックを追加する必要があります。プロパティの値がnullになるからです(NullValueは実際のセルは、デフォルト値のみを表示します)。