2010-04-20 231 views
46

將列表框綁定到列表對象的最簡單方法是什麼?將列表框綁定到列表<object>

+8

你是什麼平臺? Silverlight的? WPF?的WinForms? ASP.NET?答案有點依賴於這些知識。 – 2010-04-20 12:39:34

回答

56

您正在尋找的DataSource property

List<SomeType> someList = ...; 
myListBox.DataSource = someList; 

你也應該在DisplayMember屬性設置爲你想要的列表框中顯示該對象的屬性的名稱。如果你不這樣做,它會叫ToString()

+0

我將如何去通過選擇從列表框中移除SomeType的項目? – cam 2010-04-20 12:46:03

+0

'someList.Remove((SomeType)myListBox.SelectedValue);'(在WinForms中) – SLaks 2010-04-20 12:50:34

+5

你好。只要我不添加任何東西到收藏中,它就會爲我工作。只要我更改列表框中的收藏項不會更新。即使在分類收集項目之後分配數據源之後。 – Hooch 2012-12-09 20:23:02

4

當然,這是不會提供你任何真正有意義的,除非對象已正確地重寫ToString()(或者你是不是真的有對象的泛型列表工作,可以綁定到特定的字段):

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

// Fill the list 

someListBox.DataSource = objList; 
14

假裝你是用「客戶名稱」和「客戶ID」的屬性顯示的客戶對象的列表:

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

編輯:我知道這部作品在asp.net - 如果你正在做一個WinForms應用程序,它應該非常相似(我希望...)

+1

Windows.Forms.Listbox有其他成員;見下文。 – surfmuggle 2013-03-17 21:35:23

1

這裏有兩個奈恩路線:

1:listBox1.DataSource = yourList;

做任何操作(添加/刪除),以yourList和重新綁定。
設置DisplayMember和valueMember來控制顯示內容。

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

(或使用一個for循環做Items.Add(...)

您可以通過重載列表對象的toString()方法或通過實施listBox1.Format事件控制顯示。

11

綁定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"; 
1

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

請參考this物品進行詳細的例子。

0

我好久沒有看到在這裏,所以我將它張貼,因爲對我來說是在WinForms的最好的方式:

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

    listBox.DataSource = objList ; 

    listBox.Refresh(); 
    listBox.Update();