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:
<code class="language-csharp">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; } }</code>
Erstellen Sie nun eine Liste von Country
Objekten:
<code class="language-csharp">List<Country> countries = new List<Country>() { new Country { Name = "UK" }, new Country { Name = "Australia" }, new Country { Name = "France" } };</code>
Schritt 2: Einrichten der BindingSource
Erstellen Sie ein BindingSource
-Objekt und weisen Sie Ihre countries
-Liste als Datenquelle zu:
<code class="language-csharp">BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = countries;</code>
Schritt 3: Verbinden der BindingSource mit der ComboBox
Verknüpfen Sie das BindingSource
mit Ihrer ComboBox:
<code class="language-csharp">comboBox1.DataSource = bindingSource;</code>
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
):
<code class="language-csharp">comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Name"; // Or another suitable property if needed</code>
Schritt 5: Auf das ausgewählte Element zugreifen
Um das ausgewählte Country
Objekt zu erhalten:
<code class="language-csharp">Country selectedCountry = (Country)comboBox1.SelectedItem;</code>
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:
<code class="language-csharp">BindingList<Country> countries = new BindingList<Country>() { /* ... your countries ... */ }; bindingSource.DataSource = countries;</code>
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!