C#_DisplayMember と ValueMember

「セレクトボックスに自作の Value と Key を設定したい」記事のソース解読。

 

DisplayMember

コントロール表示するプロパティを取得・設定する。既定値は空文字。

表示項目を ToString でなく、あるプロパティが返す値を表示したいのであれば、
そのプロパティの名前DisplayMember指定する。
ex ) comboBox1.DisplayMember = "myValue_";

 

ValueMember

項目の実際の値として使用するプロパティを取得・設定する。

SelectedValue で取得・設定できるようにする値」を指定するためのもの。
これを指定することで、SelectedValue選択されている項目
ValueMember 値を取得できる。
ex ) comboBox1.ValueMember = "myKey_";

また、
特定の ValueMember 値をもつ項目を探して選択するために、
SelectedValue を使うこともできる。この使い方は重宝するもよう。
ex ) comboBox1.SelectedValue = 20; //猪が選択されて表示される

 

DataSource

DataSource プロパティは
文字列以外のオブジェクトのコレクションを指定することができる。
( Add メソッドで可能 )
この時、表示される項目はそのオブジェクトの ToString メソッド返す値となる。
ただし null の時は空文字。

 

 

 

※注※

DataSource 設定せずに、
Items の Addメソッドによりオブジェクトを追加した時は
ValueMember 設定有にかかわらず、SelectedValue常に null を返す。

--Memo--
DisplayMember が指定されていない時に ValueMember を設定すると、
DisplayMember も同じ値になる。

 

こちらから。
https://dobon.net/vb/dotnet/control/tbdisplaymember.html
ListControl.DisplayMember Property (System.Windows.Forms) | Microsoft Docs
ListControl.ValueMember Property (System.Windows.Forms) | Microsoft Docs
ComboBox Class (System.Windows.Forms) | Microsoft Docs

ValueからKeyを検索する方法↓var key = dic.First(x => x.Value == 123).Key; の箇所。
http://ftvoid.com/blog/post/760

以上。