我想将 BindingSource 连接到类对象列表,然后将对象值连接到ComboBox。 任何人都可以建议如何做?
I want to connect a BindingSource to a list of class objects and then objects value to a ComboBox. Can anyone suggest how to do it?
public class Country { public string Name { get; set; } public IList<City> Cities { get; set; } public Country() { Cities = new List<City>(); } }是我的课程,我想绑定其 name 字段到BindingSource,然后可以将其与ComboBox关联
is my class and I want to bind its name field to a BindingSource which could be then associated with a ComboBox
推荐答案As您指的是组合框,我假设您不想使用2向数据绑定(如果是,请使用 BindingList )
As you are referring to a combobox, I'm assuming you don't want to use 2-way databinding (if so, look at using a BindingList)
public class Country { public string Name { get; set; } public IList<City> Cities { get; set; } public Country(string _name) { Cities = new List<City>(); Name = _name; } }List<Country> countries = new List<Country> { new Country("UK"), new Country("Australia"), new Country("France") }; var bindingSource1 = new BindingSource(); bindingSource1.DataSource = countries; comboBox1.DataSource = bindingSource1.DataSource; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Name";
要查找在绑定组合框中选择的国家,您可以执行以下操作: Country country =(Country)comboBox1.SelectedItem; 。
To find the country selected in the bound combobox, you would do something like: Country country = (Country)comboBox1.SelectedItem;.
如果您希望ComboBox动态更新,则需要确保您设置为 DataSource 的数据结构实现 IBindingList ;这样的结构之一就是 BindingList< T> 。
If you want the ComboBox to dynamically update you'll need to make sure that the data structure that you have set as the DataSource implements IBindingList; one such structure is BindingList<T>.
提示:确保将 DisplayMember 绑定到类的Property而不是公共字段。如果您的课程使用公用字符串Name {get;组; } 可以使用,但是如果使用 public string Name; 则无法访问该值,而是显示每个对象的类型组合框中的行。
Tip: make sure that you are binding the DisplayMember to a Property on the class and not a public field. If you class uses public string Name { get; set; } it will work but if it uses public string Name; it will not be able to access the value and instead will display the object type for each line in the combo box.
更多推荐
如何将列表绑定到ComboBox?
发布评论