将列表框绑定到列表<对象>

cam*_*cam 54 c# listbox winforms

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

SLa*_*aks 66

你在寻找DataSource property:

List<SomeType> someList = ...;
myListBox.DataSource = someList;
Run Code Online (Sandbox Code Playgroud)

您还应将该DisplayMember属性设置为您希望列表框显示的对象中的属性名称.如果你不这样做,它会打电话ToString().

  • 要在WinForms中处理集合的更新,请使用`BindingList <T>`. (9认同)
  • 你好.只要我不向收集添加任何东西,它对我有用.只要我在列表框中更改我的收藏项目,就不会更新.即使在收集了chaning项目之后分配dataSource也是如此. (6认同)

Ray*_*Ray 16

假装您正在显示具有"customerName"和"customerId"属性的客户对象列表:

listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();
Run Code Online (Sandbox Code Playgroud)

编辑:我知道这可以在asp.net中运行 - 如果你正在做一个winforms应用程序,它应该非常相似(我希望...)

  • Windows.Forms.Listbox有其他成员; 见下文. (2认同)

sur*_*gle 13

System.Windows.Forms.Listbox控件绑定到对象列表(此处为dynamic类型)

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";  
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 6

当然,这不会为您提供任何真正有意义的东西,除非对象已被正确覆盖ToString()(或者您没有真正使用通用对象列表并且可以绑定到特定字段):

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

// Fill the list

someListBox.DataSource = objList;
Run Code Online (Sandbox Code Playgroud)