A List<>
to po prostu tablica automatycznie zmieniająca rozmiar, zawierająca elementy danego typu, z kilkoma funkcjami pomocniczymi (np. Sort). To tylko dane i prawdopodobnie użyjesz ich do wykonywania operacji na zestawie obiektów w modelu.
A BindingList<>
to opakowanie wokół wpisanej listy lub kolekcji, która implementuje IBindingList
interfejs. Jest to jeden ze standardowych interfejsów obsługujących dwukierunkowe wiązanie danych. Działa poprzez implementację ListChanged
zdarzenia, które jest wywoływane podczas dodawania, usuwania lub ustawiania elementów. Powiązane kontrolki nasłuchują tego zdarzenia, aby wiedzieć, kiedy odświeżyć swój wyświetlacz.
Po ustawieniu źródła danych BindingSource na a List<>
, wewnętrznie tworzy on, BindingList<>
aby zawinąć listę. Możesz chcieć wstępnie zawinąć listę BindingList<>
sobą, jeśli chcesz uzyskać do niej dostęp poza BindingSource, ale poza tym jest tak samo. Możesz również dziedziczyć z, BindingList<>
aby zaimplementować specjalne zachowanie podczas zmiany elementów.
IEditableObject
jest obsługiwany przez BindingSource. Wywoła BeginEdit na dowolnym obiekcie implementującym, gdy zmienisz dane w dowolnej powiązanej kontrolce. Następnie możesz wywołać EndEdit / CancelEdit na BindingSource i przekaże go do twojego obiektu. Przejście do innego wiersza spowoduje również wywołanie EndEdit.
BindingList umożliwia dwukierunkowe wiązanie danych przy użyciu zdarzeń, a List nie uruchamia zdarzeń, gdy zmienia się jego kolekcja.
Nie sądzę, że rozwiąże to twój konkretny problem.
źródło