DisplayMember
とValueMember
が適用されます。それらは、リフレクションによって取得できるリアルプロパティ、または.NETコンポーネントモデルとICustomTypeDescriptor
インターフェイスを使用して動作します。
あなたは常にDataRowView
インスタンスの代わりに、DataRow
Sを直接DataTable
、GetEnumerator
方法とIList
実装リターンをバインドする場合。 DataRowView
はが列名を参照できるICustomTypeDescriptor
を実装しています。
カスタムフィルターリストを追加したい場合は、どのソースからでも作成することをおすすめします。例:
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Value";
var list = Enumerable.Range(1, 10).Select(i => new {Name = i.ToString(), Value = i}).ToList();
listBox1.DataSource = list;
プロパティが存在する場合、その値が表示されます。そうでない場合は、項目のToString
が表示されます。
ただし、プログラムでアイテムを追加すると(ListBox.Items
)、これらのプロパティは無視され、常にアイテムのToString
が使用されます。
コードスニペットを共有できますか? – Munawar
非常にシンプルなコードです。私は自分の質問を編集しました –