A List<>
- это просто автоматически изменяющийся массив элементов данного типа с парой вспомогательных функций (например, sort). Это просто данные, и вы, вероятно, будете использовать их для выполнения операций с набором объектов в вашей модели.
A BindingList<>
- это оболочка для типизированного списка или коллекции, которая реализует IBindingList
интерфейс. Это один из стандартных интерфейсов, поддерживающих двустороннюю привязку данных. Он работает путем реализации ListChanged
события, которое возникает при добавлении, удалении или установке элементов. Связанные элементы управления прослушивают это событие, чтобы знать, когда обновить их отображение.
Когда вы устанавливаете DataSource BindingSource на a List<>
, он внутренне создает a, BindingList<>
чтобы обернуть ваш список. Вы можете захотеть предварительно обернуть свой список BindingList<>
самим собой, если хотите получить к нему доступ за пределами BindingSource, но в остальном это то же самое. Вы также можете наследовать от, BindingList<>
чтобы реализовать особое поведение при изменении элементов.
IEditableObject
обрабатывается BindingSource. Он вызывает BeginEdit для любого реализующего объекта, когда вы изменяете данные в любом связанном элементе управления. Затем вы можете вызвать EndEdit / CancelEdit для BindingSource, и он передаст его вашему объекту. Переход к другой строке также вызовет EndEdit.
BindingList допускает двустороннюю привязку данных с помощью событий, список не запускает события при изменении его коллекции.
Я не думаю, что это решит вашу конкретную проблему.
источник