Aus irgendeinem Grund wird beim Hinzufügen oder Entfernen von Elementen aus der DataSource (eine einfache BindingList) die ComboBox entsprechend aktualisiert, aber wenn ich ein Element wie dieses editiere, wird es nicht automatisch aktualisiert:
%Vor%Um es zu aktualisieren, wenn ich ein Element bearbeite, anstatt ein Objekt zu erstellen oder zu entfernen, muss ich dies tun, nachdem die Änderung vorgenommen wurde:
%Vor%Dies behebt das Problem, aber es scheint eine ziemlich chaotische Lösung zu sein. Auch bei großen Listen kann es langsam werden (vorzeitige Optimierung weiß ich), aber gibt es noch eine Möglichkeit, die ComboBox zu zwingen, zu aktualisieren, ohne ihre DataSource vollständig neu zuzuordnen?
Danke fürs Lesen.
Dies wird in den MSDN-Foren angegeben:
Die IBindingList-Schnittstelle enthält das ListChanged-Ereignis wo Steuerelemente wie die Combobox hängen in die zugrunde liegende Datenquelle ein zugewiesen, implementiert die genannte Schnittstelle. Ihre Datenquelle muss Erhebe den entsprechenden ListChanged mit dem richtigen ListChangeEventArgs if Wenn Sie Ihren IBindingList-Implementierer hinzufügen, entfernen, ändern usw. Auf diese Weise, immer wenn die zugrunde liegende Quelle, die Sie an Ihre Bindung gebunden haben Combobox wird geändert, die entsprechende UI-Steuerung (Combobox) ist aktualisiert.
Sie sagen, dass Sie BindingList verwenden, und in der Tat erhalten Sie die Combobox, um Objekte Ereignisse hinzuzufügen oder zu entfernen. Ich denke, du solltest die Aktualisierung der Elemente, die sich bereits in deiner BindingList befinden, auf eine andere Weise machen, weil es aussieht, als würden die richtigen BindingList-Ereignisse nicht ausgelöst.
Sie könnten entweder das untersuchen oder einfach mit reset leben und die DataSource neu zuweisen, ich denke nicht, dass Sie sich in der Stateful Windows Forms Anwendung befinden und nicht in den SaateLess Webforms, also haben Sie Ihre Objekte immer dort: )
Sie benötigen beobachtbare Auflistungen und die Implementierung von IPropertyChange:
ComboBox, das an eine ObservableCollection gebunden ist, wird nicht aktualisiert
Tags und Links c# data-binding winforms datasource combobox