【C#】WinFormsのDataGridViewで行ごとにセルタイプを変える
例えば、設定の一覧を表示する画面などで、1列目は項目名、2列目に値が入ったDataGridViewを作成したいとする。2列目は行によって値を入力したり、コンボボックスから選択したりしたいという場合がありえる。
↓こんな感じ。
項目名 │ 値
商品名 │ [ ]
分類 │ [選択▼]
下記のようにして可能。ColumnTypeはTextBoxCellのままにしておく。
//ディクショナリをコンボボックスにセット
var cmb = new DataGridViewComboBoxCell();
cmb.DataSource = dic1.ToList();
cmb.DisplayMember = "Value";
cmb.ValueMember = "Key";
dgvSettings.Rows.Add();
dgvSettings.Rows[0].Cells[1] = cmb;
//上とは違うディクショナリをコンボボックスにセット
var cmb2 = new DataGridViewComboBoxCell();
cmb2.DataSource = dic2.ToList();
cmb2.DisplayMember = "Value";
cmb2.ValueMember = "Key";
dgvSettings.Rows.Add();
dgvSettings.Rows[1].Cells[1] = cmb2;
//テキストボックスをセット
var txt = new DataGridViewTextBoxCell();
dgvSettings.Rows.Add();
dgvSettings.Rows[2].Cells[1] = txt;