将列表框绑定到列表<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();