Ihre Bindung Code tun sollten Ist nicht vollständig. Versuchen Sie folgendes:
BindingSource bsCustomers = new BindingSource();
bsCustomers.DataSource = _customers;
comboBox.DataBindings.Add(
new System.Windows.Forms.Binding("SelectedValue", bsCustomers, "id", true));
comboBox.DataSource = bsCustomers;
comboBox.DisplayMember = "name";
comboBox.ValueMember = "id";
In den meisten Fällen werden Sie diese Aufgabe im Designer erreichen können, statt es im Code zu tun.
Beginnen Sie mit dem Hinzufügen einer Datenquelle im Fenster "Datenquellen" in Visual Studio. Öffnen Sie es im Menü Ansicht> Andere Windows> Datenquellen. Fügen Sie eine Objektdatenquelle vom Typ Customer
hinzu. In den Datenquellen sehen Sie die Eigenschaften des Kunden. Durch einen Rechtsklick auf die Eigenschaften können Sie das dazugehörige Standard-Steuerelement ändern.
Jetzt können Sie einfach eine Eigenschaft aus dem Datenquellenfenster in Ihr Formular ziehen. Visual Studio fügt Ihrem Formular automatisch eine BindingSource
und eine BindingNavigator
Komponente hinzu, wenn Sie das erste Steuerelement löschen. Das BindingNavigator
ist optional und Sie können es sicher entfernen, wenn Sie es nicht benötigen. Visual Studio übernimmt auch die gesamte Verkabelung. Sie können es durch das Eigenschaftenfenster optimieren. Manchmal ist dies für Kombinationsfelder erforderlich.
Es gibt nur eine Sache in Ihrem Code zu tun hat: eine tatsächliche Datenquelle an die Bindungsquelle zuordnen:
customerBindingSource.DataSource = _customers;
comboBox.Items [n] .Selected = true; funktioniert nicht für mich (könnte ein CF-Problem sein), aber SelectedValue tut es, ich habe es vorher versucht, aber mit dem falschen Wert. Vielen Dank. – mdc
Ich möchte anmerken, dass ich das Feld, das der Wert Mitglied war, nicht nur das Objekt angeben musste, um dies zur Arbeit zu bringen. Bei den oben genannten Kunden musste ich 'comboBox.SelectedValue = customerToSelect.id' verwenden. – AdamMc331