🐇
DataGridViewにコンボボックス列を追加する方法
はじめに
n番煎じですが備忘録としてDataGridViewにコンボボックス列を追加する方法をまとめていきたいと思います。
コード
//ComboBoxに表示する項目のデータテーブルを作成する
m_COMBO = new DataTable("COMBO");
m_COMBO.Columns.Add("Display", typeof(string));
m_COMBO.Columns.Add("Value", typeof(string));
m_COMBO.Rows.Add("Ⅰ", 1);
m_COMBO.Rows.Add("Ⅱ", 2);
m_COMBO.Rows.Add("Ⅲ", 3);
//DataGridViewComboBoxColumnを作成
DataGridViewComboBoxColumn _ComboColumn = new DataGridViewComboBoxColumn();
_ComboColumn.DataSource = m_COMBO;
_ComboColumn.ValueMember = "Value";
_ComboColumn.DisplayMember = "Value";
//DataGridViewに現在存在しているCOMBO列と
//作成したDataGridViewComboBoxColumnを入れ替える
//表示する列の名前を設定する
_ComboColumn.DataPropertyName = DataGridView.Columns["COMBO"].DataPropertyName;
//挿入した列の名前を「COMBO」とする
_ComboColumn.Name = "COMBO";
//DataGridViewにコンボボックス列を追加する場合
//先ほど削除したCOMBO列の位置に作成したコンボボックス列を追加する
DataGridView.Columns.Add(_ComboColumn);
//元からDataGridViewに存在する列をコンボボックス列に置き換える場合
//現在DataGridViewに存在するCOMOBO列の位置を取得する
int _ComboColumnIndex = DataGridView.Columns["COMBO"].Index;
DataGridView.Columns.Remove("COMBO");
//挿入した列の名前を「COMBO」とする
//先ほど削除したCOMBO列の位置に作成したコンボボックス列を追加する
DataGridView.Columns.Insert(_ComboColumnIndex, _ComboColumn);
解説
まず、追加するコンボボックス列のDataSource用にDataTableを作成します。
表示される値と実際の値を変えたい場合は「Display」と「Value」列を作成します。
次にDataGridViewComboBoxColumnを作成します。
そして先ほど作成したDataTableをDataGridViewComboBoxColumnのDataSourceとしてセットします。
DisplayMemberに表示される値を格納している列名を、ValueMemberに実際の値を格納している列名をセットします。
以降からDataGridViewにコンボボックス列を追加する場合と元からDataGridViewに存在する列をコンボボックス列に置き換える場合で処理が変わります。
DataGridViewにコンボボックス列を追加する場合では作成したDataGridViewComboBoxColumnをデータグリッドビューにAddで追加します。
元からDataGridViewに存在する列をコンボボックス列に置き換える場合はコンボボックス列に置き換える列の位置を取得します。
その後、置き換える列をデータグリッドビューから削除します。最後にInsertで取得しておいたコンボボックス列に置き換える列の位置にDataGridViewComboBoxColumnを追加します。
Discussion