Odnosząc się do combobox, zakładam, że nie chcesz używać dwukierunkowego wiązania danych (jeśli tak, spójrz na użycie 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";
Aby znaleźć wybranego kraju w oprawionego combobox, byś zrobił coś takiego: Country country = (Country)comboBox1.SelectedItem;
.
Jeśli chcesz, aby ComboBox aktualizował się dynamicznie, musisz upewnić się, że struktura danych, którą ustawiłeś jako DataSource
narzędzia IBindingList
; jedna taka struktura jest BindingList<T>
.
Wskazówka: upewnij się, że wiążesz DisplayMember
właściwość z właściwością klasy, a nie polem publicznym. Jeśli klasa używa public string Name { get; set; }
, będzie działać, ale jeśli używa public string Name;
, nie będzie w stanie uzyskać dostępu do wartości i zamiast tego wyświetli typ obiektu dla każdej linii w polu kombi.