Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表框绑定到列表<;对象>;以WinForms_C#_List_Winforms_Listbox - Fatal编程技术网

C# 将列表框绑定到列表<;对象>;以WinForms

C# 将列表框绑定到列表<;对象>;以WinForms,c#,list,winforms,listbox,C#,List,Winforms,Listbox,将列表框绑定到Windows窗体中的对象列表的最简单方法是什么?您正在查找: List someList=。。。; myListBox.DataSource=someList; 您还应该将DisplayMember属性设置为希望列表框显示的对象中的属性名称。如果您不这样做,它将调用ToString(),除非对象已正确重写ToString()(或者您没有真正使用通用对象列表,并且可以绑定到特定字段),否则这不会为您提供任何真正有意义的内容: List objList=new List(); //

将列表框绑定到Windows窗体中的对象列表的最简单方法是什么?

您正在查找:

List someList=。。。;
myListBox.DataSource=someList;

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

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

List objList=new List();
//填写清单
someListBox.DataSource=objList;

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

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

编辑:我知道这在asp.net中起作用-如果您正在使用winforms应用程序,它应该非常类似(我希望…

这里有两条主要路线:

1:
listBox1.DataSource=yourList

对列表进行任何操作(添加/删除)并重新绑定。
设置DisplayMember和ValueMember以控制显示内容

2:
listBox1.Items.AddRange(yourList.ToArray())

(或使用for循环执行
项。添加(…)

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

将控件绑定到对象列表(此处为dynamic类型)

List dynList=new List(){
新的{Id=1,Name=“电梯”,Company=“垂直弹出”},
新建{Id=2,Name=“Stairs”,Company=“Fitness”}
};
listBox.DataSource=dynList;
listBox.DisplayMember=“Name”;
listBox.ValueMember=“Id”;

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

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

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

    listBox.DataSource = objList ;

    listBox.Refresh();
    listBox.Update();            
List objList=new List();
listBox.DataSource=objList;
resh();
Update();
对于UWP应用程序:

XAML


C#

公共可观察收集结果

您的平台是什么?银灯?WPF?Winforms?ASP.NET?答案有点取决于这些知识。我如何通过选择从列表框中删除某个类型的项目?
someList.Remove((SomeType)myListBox.SelectedValue)(在WinForms中)您好。只要我不向收藏中添加任何内容,它就对我有效。一旦我更改了我的收藏,列表框中的项目就不会更新。即使在更改集合中的项目后分配了数据源。@SASS\u Shooter:问题是关于WinForms的。若要在WinForms中处理集合的更新,请使用
BindingList
。Windows.Forms.Listbox有其他成员;看下面。@surf麻瓜。。。而且
DataBind()
方法不存在,我想?我知道这个问题没有关系,但是:你如何访问
公司的成员?问题被标记为WinForms。@LarsTech没有注意到,因为它不是标题或文本的一部分,但我是通过为UWP寻找同一问题的答案而来到这里的,也许其他人也会发现这个答案很有用。你如何重新绑定?哦,我的上帝……谢谢!我在WinForms工作已经12年了,为了让这个&@%$ListBox正常工作,我已经被困了将近两个小时。
listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();
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";  
ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";
    List<object> objList = new List<object>();

    listBox.DataSource = objList ;

    listBox.Refresh();
    listBox.Update();            
<ListBox x:Name="List" DisplayMemberPath="Source" ItemsSource="{x:Bind Results}"/>
public ObservableCollection<Type> Results