A List<>
- це просто масив із автоматичним зміною розміру елементів даного типу з кількома допоміжними функціями (наприклад: сортування). Це лише дані, і ви, швидше за все, будете використовувати їх для запуску операцій з набором об’єктів у вашій моделі.
A BindingList<>
- це обгортка навколо набраного списку або колекції, яка реалізує IBindingList
інтерфейс. Це один із стандартних інтерфейсів, що підтримує двосторонню прив'язку даних. Це працює шляхом реалізації ListChanged
події, яка виникає під час додавання, видалення чи встановлення елементів. Зв’язані елементи керування слухають цю подію, щоб знати, коли слід оновити їх показ.
Коли ви встановлюєте для джерела даних BindingSource значення a List<>
, він внутрішньо створює a BindingList<>
для обгортання вашого списку. Можливо, ви захочете попередньо обернути свій список BindingList<>
собою, якщо хочете отримати доступ до нього за межами BindingSource, але в іншому випадку це точно так само. Ви також можете успадкувати від, BindingList<>
щоб реалізувати особливу поведінку при зміні елементів.
IEditableObject
обробляється BindingSource. Він буде викликати BeginEdit для будь-якого реалізуючого об'єкта, коли ви зміните дані в будь-якому зв'язаному елементі управління. Потім ви можете викликати EndEdit / CancelEdit на BindingSource, і він передасть його вашому об’єкту. Перехід до іншого рядка також викликає EndEdit.