リストボックスをオブジェクトのリストにバインドする最も簡単な方法は何ですか?
_DataSource property
_ を探しています:
_List<SomeType> someList = ...;
myListBox.DataSource = someList;
_
また、DisplayMember
プロパティを、リストボックスに表示するオブジェクト内のプロパティの名前に設定する必要があります。そうしないと、ToString()
を呼び出します。
「customerName」および「customerId」プロパティを持つ顧客オブジェクトのリストを表示しているふりをします:
listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();
編集:これはasp.netで動作することを知っています-あなたがwinformsアプリをしている場合、それはかなり似ているはずです(私は願っています...)
System.Windows.Forms.Listbox コントロールをオブジェクトのリストにバインドします(ここでは動的タイプ)
List<dynamic> dynList = new List<dynamic>() {
new {Id = 1, Name = "Elevator", Company="Vertical Pop" },
new {Id = 2, Name = "Stairs", Company="Fitness" }
};
listBox.DataSource = dynList;
listBox.DisplayMember = "Name";
listBox.ValueMember = "Id";
確かに、これはオブジェクトがToString()
を適切にオーバーライドしない限り(またはオブジェクトの一般的なリストを実際に操作しておらず、特定のフィールドにバインドできない場合)、本当に意味のあるものを提供しません:
List<object> objList = new List<object>();
// Fill the list
someListBox.DataSource = objList;
ここには2つの主なルートがあります。
1:_listBox1.DataSource = yourList;
_
YourListおよびRebindに対して操作(追加/削除)を行います。
DisplayMemberとValueMemberを設定して、表示内容を制御します。
2:listBox1.Items.AddRange(yourList.ToArray());
(またはforループを使用してItems.Add(...)
を実行します)
リストオブジェクトのToString()をオーバーロードするか、listBox1.Formatイベントを実装することにより、Displayを制御できます。
ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";
詳細な例については、 this の記事を参照してください。
私はここで見たことがないので、私はそれを投稿します。なぜなら、私にとってはwinformsでの最良の方法だからです。
List<object> objList = new List<object>();
listBox.DataSource = objList ;
listBox.Refresh();
listBox.Update();