ComboBoxとDataGridViewComboBoxColumnを同期させる

まさか、こんなことがすんなりできないなんて思わなかった。以下、順を追って作業。

  • ComboBoxとDataGridViewが配置されたFormを用意する


ComboBoxはgendersComboBox、DataGridViewはgenderDataGridViewというベタな名前にする。

  • データ連結に使用するリスト形式のオブジェクトを用意する
IList genders = new List();
genders.Add(new GenderItem(0, "男"));
genders.Add(new GenderItem(1, "女"));
  • オブジェクトをComboBoxにバインドする
this.gendersComboBox.DataSource = genders;
this.gendersComboBox.DisplayMember = "Name";
this.gendersComboBox.ValueMember = "Value";
  • オブジェクトをDataGridView(DataGridViewComboBoxColumn)にバインドする
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
this.genderDataGridView.Columns.Add(column);
column.DataSource = genders;
column.DisplayMember = "Name";
column.ValueMember = "Value";

と組んでビルドして起動する。

いきなり駄目だ。同じデータソースを参照しているはずなのに、ComboBoxの指しているアイテムはDataGridViewのカラムと同期している以前に表示されてもいない。スクリーンショットでは解らないが、DataGridViewComboBoxColumnのComboBoxの内容を変更しても、うんともすんとも言わない。

    • 4時間経過 --

結局解決策まで行き着いたのだが、今日はもう眠いのでまた明日に。