2012年3月1日木曜日

DataGridView ComboBox列を追加すると背景色が黒色になる。

DataGridView に ComboboxColumnを2つ追加し、1列目のコンボの値が変更されたら2列目のコンボのリストを再作成する…
みたいな処理を作ったところ、新規行の1列目のコンボボックスをプルダウンした段階で、コンボ内の背景色が黒くなる現象に遭遇した。

2列目のコンボのリストを再作成するので、1列目にdataGridView_EditingControlShowingイベントを追加し、
その中でdataGridViewComboBox_SelectedIndexChangedとかっつってイベントを発生させて、
dataGridViewComboBox_SelectedIndexChanged()の中で2列目のリストを再作成していた。

このとき、dataGridViewComboBox_SelectedIndexChangedの中で、直接dataGridView.Rows[0]~とかってやると、この現象が出るらしい。

ちょうど同じ現象の書き込みが。。。

参考サイト:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36436&forum=7

で、
DataGridViewComboBoxEditingControl cb = (DataGridViewComboBoxEditingControl)sender;
DataGridView grid = cb.EditingControlDataGridView;

+カレントセルの内容を取得するときは、必ず
cb.EditingControlFormattedValue
ってする。
cb.EditingControlFormattedValue じゃない方法で取得すると、相変わらず背景黒で表示されちゃうので注意。

てか、これバグでしょーよ。

0 件のコメント: