Da Sie sich auf eine Combobox beziehen, gehe ich davon aus, dass Sie keine bidirektionale Datenbindung verwenden möchten (wenn ja, schauen Sie sich die Verwendung von a an 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 in der gebundenen Combobox ausgewählte Land zu finden, gehen Sie wie folgt vor : 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
Implementierung festgelegt haben IBindingList
, vorhanden ist. Eine solche Struktur ist BindingList<T>
.
Tipp: Stellen Sie sicher, dass Sie die DisplayMember
an eine Eigenschaft in der Klasse und nicht an ein öffentliches Feld binden . Wenn Ihre Klasse verwendet public string Name { get; set; }
, funktioniert es, aber wenn es verwendet wird, kann public string Name;
es nicht auf den Wert zugreifen und zeigt stattdessen den Objekttyp für jede Zeile im Kombinationsfeld an.