我想连接一个BindingSource
类对象列表,然后将对象值连接到一个ComboBox.
谁能建议怎么做?
public class Country { public string Name { get; set; } public IListCities { get; set; } public Country() { Cities = new List (); } }
是我的类,我想将其name
字段绑定到BindingSource,然后可以与ComboBox关联
正如你所说的一个组合框,我假设你不想使用双向数据绑定(如果有的话,请看一下使用BindingList
)
public class Country { public string Name { get; set; } public IListCities { get; set; } public Country(string _name) { Cities = new List (); Name = _name; } }
Listcountries = new List { 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";
对于背景,有两种方法可以使用ComboBox/ListBox
1)将Country对象添加到Items属性并将Country作为Selecteditem检索.要使用它,您应该覆盖Country的ToString.
2)使用DataBinding,将DataSource设置为IList(List <>)并使用DisplayMember,ValueMember和SelectedValue
对于2),您首先需要一个国家列表
// not tested, schematic: Listcountries = ...; ...; // fill comboBox1.DataSource = countries; comboBox1.DisplayMember="Name"; comboBox1.ValueMember="Cities";
然后在SelectionChanged中,
if (comboBox1.Selecteditem != null) { comboBox2.DataSource=comboBox1.SelectedValue; }
public MainWindow(){ ListpersonList = new List (); personList.Add(new person { name = "rob", age = 32 } ); personList.Add(new person { name = "annie", age = 24 } ); personList.Add(new person { name = "paul", age = 19 } ); comboBox1.DataSource = personList; comboBox1.DisplayMember = "name"; comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged); } void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { person selectedPerson = comboBox1.SelectedItem as person; messageBox.Show(selectedPerson.name, "caption goes here"); }
繁荣.