Da Sie sich auf eine Combobox beziehen, nehme ich an, dass Sie keine 2-Wege-Datenbindung verwenden möchten (wenn ja, schauen Sie sich die Verwendung einer 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";
Um das Land zu finden, das in der gebundenen Combobox ausgewählt wurde, würden Sie etwa so vorgehen: Country country = (Country)comboBox1.SelectedItem;
.
Wenn Sie möchten, dass die ComboBox dynamisch aktualisiert wird, müssen Sie sicherstellen, dass die Datenstruktur, die Sie als DataSource
implementiert IBindingList
Eine solche Struktur ist BindingList<T>
.
Tipp: Stellen Sie sicher, dass Sie die DisplayMember
auf eine Eigenschaft der Klasse und nicht auf ein öffentliches Feld. Wenn Ihre Klasse public string Name { get; set; }
wird es funktionieren, aber wenn es mit public string Name;
kann es nicht auf den Wert zugreifen und zeigt stattdessen den Objekttyp für jede Zeile im Kombinationsfeld an.