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

时间:2010-04-20 12:33:38

标签: c# winforms listbox

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

8 个答案:

答案 0 :(得分:66)

您正在寻找DataSource property

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

您还应将DisplayMember属性设置为您希望列表框显示的对象中的属性名称。如果不这样做,则会调用ToString()

答案 1 :(得分:16)

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

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

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

答案 2 :(得分:13)

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

答案 3 :(得分:4)

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

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

// Fill the list

someListBox.DataSource = objList;

答案 4 :(得分:1)

这里有两条路线:

1:listBox1.DataSource = yourList;

对yourList和Rebind进行任何操作(添加/删除) 设置DisplayMember和valueMember以控制显示的内容。

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

(或使用for循环执行Items.Add(...)

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

答案 5 :(得分:1)

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

有关详细示例,请参阅this文章。

答案 6 :(得分:0)

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

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

    listBox.DataSource = objList ;

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

答案 7 :(得分:-1)

对于UWP应用:

XAML

<ListBox x:Name="List" DisplayMemberPath="Source" ItemsSource="{x:Bind Results}"/>

C#

public ObservableCollection<Type> Results