Оскільки ви посилаєтесь на комбінований ящик, я припускаю, що ви не хочете використовувати двостороння прив'язка даних (якщо так, подивіться на використання 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;
він не зможе отримати доступ до значення, а натомість відобразить тип об'єкта для кожного рядка у поле комбо.