一尘不染

如何将列表绑定到ComboBox?

c#

我想将A连接BindingSource到类对象列表,然后将对象值连接到ComboBox。
有人可以建议如何做吗?

public class Country
{
    public string Name { get; set; }
    public IList<City> Cities { get; set; }

    public Country()
    {
        Cities = new List<City>();
    }
}

是我的课程,我想将其name字段绑定到BindingSource,然后可以将其与ComboBox关联


阅读 278

收藏
2020-05-19

共1个答案

一尘不染

当您指的是组合框时,我假设您不想使用2向数据绑定(如果是,请使用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;

如果要ComboBox动态更新,则需要确保已设置为DataSource实现的数据结构IBindingList;一种这样的结构是BindingList<T>


提示:请确保将绑定DisplayMember到类的Property而不是公共字段。如果您使用类public string Name { get; set; },它将起作用,但是如果使用public string Name;,它将无法访问该值,而是在组合框中显示每一行的对象类型。

2020-05-19