将列表框绑定到列表<object>

将Listbox绑定到List对象的最简单方法是什么?

您正在查找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控件绑定到对象列表(这里是dynamictypes)

 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; 

这里有两条不同的路线:

1: listBox1.DataSource = yourList;

做任何操作(添加/删除)到yourList和重新绑定。
设置DisplayMember和valueMember来控制显示内容。

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

(或使用for-loop来做Items.Add(...)

您可以通过重载列表对象的ToString()或通过实现listBox1.Format事件来控制显示。

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

我没有在这里看到,所以我张贴它,因为对我来说是winforms中最好的方式:

  List<object> objList = new List<object>(); listBox.DataSource = objList ; listBox.Refresh(); listBox.Update();