Aktualizacja BindingSource w WinForms nie aktualizuje kolekcji Datasource
Chcę wyświetlić kolekcję niestandardową w aDataGridView
w aplikacji Windows Forms. Ta niestandardowa kolekcja realizujeICollection
, iIEnumerable
. UstawiłemBindingSource
, używając kolekcji jako właściwości .DataSource. TheDataGridView
jest ustawiony na używanie mojegoBindingSource
jako źródło danych. Kiedy dodaję nowy element do kolekcji za pomocąBindingSource.Add()
metoda,DataGridView
aktualizuje się poprawnie z nowym elementem. TheBindingSource
Z drugiej strony DataSource:
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
W powyższym kodzie wewnętrzna lista myBindingSource zawiera odpowiednią liczbę rekordów (3) iDataGridView
zawiera również trzy rekordy, ale myCollection zawiera tylko dwa rekordy. Wiem, że zmiana podstawowej myCollection NIE spowoduje aktualizacjiBindingSource
alboDataGridView
, ponieważ nie jest toBindingList<T>
, ale miałem wrażenie, że aktualizujęBindingSource
bezpośrednio zapewni, że myCollection zostanie zaktualizowany w tym samym czasie.
Czy istnieje sposób na użycie kolekcji, która nie jestBindingList<T>
i zaktualizuj go podczas interakcji zBindingSource
bezpośrednio?
Aktualizacja: W jeden sposób otrzymałem dane zaktualizowane we wszystkich częściach (Collection, BindingSource, DataGridView) w następujący sposób:
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
Jestem pewien, że istnieje lepszy sposób na zaatakowanie tego problemu, ale jest to jedyna metoda, która wygenerowała oczekiwane rezultaty.