※ ChatGPTを利用し、要約された質問です(原文:DataGridViewのセルのItem設定につい)
DataGridViewのセルにコンボボックスの項目を追加する方法
このQ&Aのポイント
DataGridViewのセルにコンボボックスの項目を追加していますが、入力した文字列が表示されない問題が発生しています。
CellValidatingメソッドを使用して、コンボボックスのリストに入力された文字列を追加していますが、セルの表示が更新されない問題があります。
セルに入力した文字列がコンボボックスのリストに追加されるようにするためには、セルの値を設定する必要があります。
DataGridViewのセルのItem設定につい
DataGridView内にコンボボックスのカラムを設定しました。
下記のサイトを参考にしました。
http://dobon.net/vb/dotnet/datagridview/comboboxdropdownstyle.html
入力した内容をカラム単位ではなく、セル単位で追加したかったため、
CellValidatingメソッドを下記の通り一部変更しました。
//CellValidatingイベントハンドラ
private void DataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//該当する列か調べる
if (dgv.Columns[e.ColumnIndex].Name == "sComboColumn" &&
dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn)
{
//DataGridViewComboBoxColumn cbc =
// (DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex];
//
// ↓cellへ変更
//
DataGridViewComboBoxCell cbc =
(DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
//コンボボックスの項目に追加する
if (!cbc.Items.Contains(e.FormattedValue))
{
cbc.Items.Add(e.FormattedValue);
}
//セルの値を設定しないと、元に戻ってしまう
dgv[e.ColumnIndex, e.RowIndex].Value = e.FormattedValue;
}
}
コンボボックスに入力し、EnterやTabを押したタイミングでコンボボックスのリストに、
入力した文字列が追加されます。また、入力した文字列がセルに表示された状態になります。
しかし、その後同じセルに文字列を入力した場合、リストに文字列が追加されますが、
セルに表示される文字列はその前に入力された文字列のままです。
どのようにすれば入力後のセルの内容を設定できるかご存じの方がいれば
ご教授いただきたいです。
お礼
ありがとうございます! ちゃんと見ておらずお恥ずかしいばかりです・・・ どうもありがとうございました!