C# 将Winforms列表框集合绑定到列表<;对象>;
我有一个包含客户详细信息的类C# 将Winforms列表框集合绑定到列表<;对象>;,c#,winforms,data-binding,listbox,C#,Winforms,Data Binding,Listbox,我有一个包含客户详细信息的类 class CustomerData : INotifyPropertyChanged { private string _Name; public string Name { get { return _Name } set { _Name = value; OnPropertyChanged("Name");
class CustomerData : INotifyPropertyChanged
{
private string _Name;
public string Name
{
get
{ return _Name }
set
{
_Name = value;
OnPropertyChanged("Name");
}
}
// Lots of other properties configured.
}
我还有一个CustomerData
值的列表list MyData代码>
我目前用下面的方法将个人CustomerData
对象绑定到textboxs
,效果很好
this.NameTxtBox.DataBindings.Add("Text", MyCustomer, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
我正在努力找到一种方法,将列表MyData
中的每个对象绑定到ListBox
我想让MyData列表中的每个对象都显示在显示名称的列表框中
我已尝试将数据源
设置为MyData
列表,并将DisplayMember
设置为“Name”,但当我向MyData
列表添加项目时,列表框
不会更新
有什么想法吗?我发现当绑定列表被修改时,List
将不允许更新列表框。
要使其正常工作,您需要使用BindingList
BindingList MyData=newbindingList();
MyListBox.DataSource=MyData;
MyListBox.DisplayMember=“Name”;
添加(新CustomerData(){Name=“Jimmy”})//你检查过这个吗?是的,我试过了。但是,当我向列表中添加项目时,列表框不会更新。winforms不使用观察系统。所以你必须把对象推到列表框本身。啊,找到了。我需要使用BindingList而不是List。这允许列表框随着集合的修改而更新。
BindingList<CustomerData> MyData = new BindingList<CustomerData>();
MyListBox.DataSource = MyData;
MyListBox.DisplayMember = "Name";
MyData.Add(new CustomerData(){ Name = "Jimmy" } ); //<-- This causes the ListBox to update with the new entry Jimmy.