0

私は4つのパブリックintプロパティを持つクラスを持っています。私がやろうとしているのは、List を BindingSource に DataSource としてバインドし、その BindingSource を DataGridView にバインドすることです。すべてが完全に機能します。今、セルの値を別のものに「変換」しようとしています。たとえば、私は持っています:

List<MyClass> list = new List<MyClass>()
list.Add(new MyClass(1,2,3,4))
list.Add(new MyClass(0,2,3,4))

したがって、DataGridView では次のようになります。

----------------
Row1 1|2|3|4
----------------
Row2 0|2|3|4
----------------

しかし、私がやろうとしていることは、次のようなものになることです:

----------------
Row1 "Dog"|2|3|4
----------------
Row2 "Cat"|2|3|4
----------------

ご覧のとおり、私のクラスの "0" 値は "Cat" として表示され、"1" は DataGridView の "Dog" として表示されます。私はそれを ComboBoxCell にして、2 方向に動作させたいと思っています。「犬」を「猫」に変更すると、基になるリストの値が「1」から「0」に変更されます。それを行うための最良の、最もクリーンな方法は何ですか? 助けてくれてありがとう。

4

1 に答える 1

0

すべての DataGridView には、列定義のコレクションがあります。そのリスト内には、現在 4 つのtextBoxColumnsがあります。それがあなたが見る理由です

----------------
Row1 1|2|3|4
----------------
Row2 0|2|3|4
----------------

最初の列の列定義をDataGridViewComboBoxColumnに変更する必要があります。その後、この列の dataSource を設定し (例: Dog、Cat aso を含む新しい BindingList)、sourceColumn をDataPropertyNameにバインドできます。

// short demo code, MUST BE ADAPTED
dgvCOMBOBOXCOLUMN.DataSource = YOUR_CATS_DOGS_BS;
dgvCOMBOBOXCOLUMN.DisplayMember = COLUMNNAME_OF_BS_TO_SHOW;
dgvCOMBOBOXCOLUMN.Value = COLUMNNAME_OF_BS_WITH_ACCORDING_IDs;
dgvCOMBOBOXCOLUMN.DataPropertyName = COLUMNNAME_OF_MYCLASS_TO_BIN;

もちろん、これらの設定はVS デザイナ内で行うことができます。これをお勧めします。

于 2012-09-16T20:29:04.920 に答える