web-dev-qa-db-ja.com

ListboxをList <object>にバインド

リストボックスをオブジェクトのリストにバインドする最も簡単な方法は何ですか?

54
cam

_DataSource property_ を探しています:

_List<SomeType> someList = ...;
myListBox.DataSource = someList;
_

また、DisplayMemberプロパティを、リストボックスに表示するオブジェクト内のプロパティの名前に設定する必要があります。そうしないと、ToString()を呼び出します。

66
SLaks

「customerName」および「customerId」プロパティを持つ顧客オブジェクトのリストを表示しているふりをします:

listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();

編集:これはasp.netで動作することを知っています-あなたがwinformsアプリをしている場合、それはかなり似ているはずです(私は願っています...)

16
Ray

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";  
13
surfmuggle

確かに、これはオブジェクトがToString()を適切にオーバーライドしない限り(またはオブジェクトの一般的なリストを実際に操作しておらず、特定のフィールドにバインドできない場合)、本当に意味のあるものを提供しません:

List<object> objList = new List<object>();

// Fill the list

someListBox.DataSource = objList;
4
Justin Niessner

ここには2つの主なルートがあります。

1:_listBox1.DataSource = yourList;_

YourListおよびRebindに対して操作(追加/削除)を行います。
DisplayMemberとValueMemberを設定して、表示内容を制御します。

2:listBox1.Items.AddRange(yourList.ToArray());

(またはforループを使用してItems.Add(...)を実行します)

リストオブジェクトのToString()をオーバーロードするか、listBox1.Formatイベントを実装することにより、Displayを制御できます。

1
Henk Holterman
ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";

詳細な例については、 this の記事を参照してください。

1
Maddie

私はここで見たことがないので、私はそれを投稿します。なぜなら、私にとってはwinformsでの最良の方法だからです。

    List<object> objList = new List<object>();

    listBox.DataSource = objList ;

    listBox.Refresh();
    listBox.Update();            
0
paulofer85