ListBox nicht zeigen, änderungen an der DataSource
Ich dachte, das wäre ein einfaches problem, aber ich kann nicht finden alle Informationen auf der web. Ich bin binden Sie eine ListBox an eine List
mit BindingSource
etwa so:
List<Customer> customers = MyMethodReturningList();
BindingSource customersBindingSource = new BindingSource();
customersBindingSource.DataSource = customers;
customersListBox.DataSource = customersBindingSource;
Nun, wenn ich das hinzufügen oder löschen von customers
Liste, meine ListBox
aktualisiert wird (auch ohne ResetBindings
auf BindingSource
), aber wenn ich ändern die customer-Objekte in der Liste, ist es nicht. Aufruf ResetBindings
hat keine Wirkung. Ich selbst umgesetzt, meine eigenen BindingList
, aber das Verhalten hat sich nicht verändert.
Die Customer
Klasse verwendet Eigenschaften, die für den Zugriff auf und änderung von Daten. Seine ToString()
Inhalte in der Liste angezeigt.
Ich bin mit C# in .Net 2.0.
Irgendwelche Ideen?
Dank
InformationsquelleAutor Blazej Czapp | 2009-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine
BindingList
Sie brauchen noch nicht einmal denBindingSource
:InformationsquelleAutor Chuck Wilbur
OK, hier ist ein dirty fix: wenever Sie brauchen, um zu aktualisieren das Kontrollkästchen Inhalt set datasource = null, dann binden Sie es.
der Grund, warum es nicht aktualisiert ist, weil die Objekte in der Liste nicht geändert haben und es prüft nur den refrences des Objekts eher als Ihre Inhalte.
Ein weiteres problem ist, Datenquelle verliert seine design-time-Einstellungen, wie z.B. DisplayMember und ValueMember-Eigenschaften wird nicht gesetzt.
InformationsquelleAutor Michael
Es ist auch ein Fehler in der Liste, die dieses problem verursachen können. Wenn Sie die SelectionMode-zu Keine dieses problem erscheint.
Als eine Arbeit um die ich den Auswahl-Modus und dann wieder Keiner, wenn die Aktualisierung der Datenquelle.
InformationsquelleAutor Eric Schneider
Ich habe, um dieses problem durch die Umwandlung von Daten in array beim Update-Quelle. Bitte sehen UpdateData-Methode. Auf diese Weise können Sie aktualisieren Sie Ihre combo-box ohne ComboBox-Einstellungen.
InformationsquelleAutor Softec
Ich verstehe, dass diese Frage wurde vor fast 6 Jahren aber anders als work-around sehe ich nicht eine richtige Antwort hier.
Wenn Sie die Eigenschaft ändern eines Elements in einer collection das Ereignis ausgelöst wird, für das element (Objekt), nicht aber die Sammlung. So ist die Sammlung nicht sehen, eine änderung und wird nicht aktualisiert gebundenen Steuerelemente. Elemente im inneren alle verbindlichen Sammlungen und die meisten generischen Auflistungen wie
List<>
erhalten 2 VeranstaltungenPropertyChanging
undPropertyChanged
. Wenn eine Eigenschaft des Elements innerhalb der Sammlung verändert wird, das event wird ausgelöst. Alles, was Sie tun müssen ist, fügen Sie einen Ereignishandler auslösen würde, dass entweder wieder verbindliche oder ein Ereignis auszulösen, auf dasCollection
.InformationsquelleAutor ArtK