Поскольку вы имеете в виду поле со списком, я предполагаю, что вы не хотите использовать двустороннюю привязку данных (если да, посмотрите на использование 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;
.
Если вы хотите, чтобы ComboBox обновлялся динамически, вам необходимо убедиться, что структура данных, которую вы установили в качестве DataSource
инструментов IBindingList
; одна такая структура BindingList<T>
.
Совет: убедитесь, что вы привязываете DisplayMember
к свойству класса, а не к общедоступному полю. Если ваш класс использует, public string Name { get; set; }
он будет работать, но если он использует, public string Name;
он не сможет получить доступ к значению и вместо этого будет отображать тип объекта для каждой строки в поле со списком.