C# ComboBox-Datenbindung: Anzeigen einer Liste von Objekten
Diese Anleitung zeigt, wie Sie eine C#-ComboBox mit einer Liste von Objekten füllen und dabei eine bestimmte Eigenschaft (z. B. „Name“) jedes Objekts als Element im Dropdown-Menü anzeigen. Wir verwenden ein BindingSource
, um die Datenverbindung zu verwalten.
Schritt 1: Definieren der Datenklasse und -liste
Erstellen Sie zunächst eine Klasse (z. B. Country
) mit den Eigenschaften, die Sie in Ihrer ComboBox darstellen möchten. Hier ist ein Beispiel mit einer Name
-Eigenschaft und einer Liste von City
-Objekten:
public class Country { public string Name { get; set; } public IList<City> Cities { get; set; } = new List<City>(); } public class City { public string Name { get; set; } }
Erstellen Sie nun eine Liste von Country
Objekten:
List<Country> countries = new List<Country>() { new Country { Name = "UK" }, new Country { Name = "Australia" }, new Country { Name = "France" } };
Schritt 2: Einrichten der BindingSource
Erstellen Sie ein BindingSource
-Objekt und weisen Sie Ihre countries
-Liste als Datenquelle zu:
BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = countries;
Schritt 3: Verbinden der BindingSource mit der ComboBox
Verknüpfen Sie das BindingSource
mit Ihrer ComboBox:
comboBox1.DataSource = bindingSource;
Schritt 4: Anzeige- und Wertelemente konfigurieren
Geben Sie die Eigenschaft an, die im ComboBox-Dropdown angezeigt werden soll (DisplayMember
) und die Eigenschaft, die bei Auswahl eines Elements abgerufen werden soll (ValueMember
):
comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Name"; // Or another suitable property if needed
Schritt 5: Auf das ausgewählte Element zugreifen
Um das ausgewählte Country
Objekt zu erhalten:
Country selectedCountry = (Country)comboBox1.SelectedItem;
Umgang mit dynamischen Aktualisierungen (IBindingList)
Stellen Sie bei dynamischen Aktualisierungen (Hinzufügen oder Entfernen von Elementen aus der Liste) sicher, dass Ihre Datenquelle die IBindingList
-Schnittstelle implementiert. BindingList<T>
ist eine gute Wahl:
BindingList<Country> countries = new BindingList<Country>() { /* ... your countries ... */ }; bindingSource.DataSource = countries;
Dieser Ansatz stellt sicher, dass Änderungen an der zugrunde liegenden countries
Liste automatisch in der ComboBox widergespiegelt werden.
Das obige ist der detaillierte Inhalt vonWie binde ich eine Liste von Objekten an eine ComboBox in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!