Список <T> по сравнению с преимуществами/Недостатками BindingList <T>

Может кто-то описывать то, что различие между этими двумя для моего проекта.

В настоящее время у меня есть a List<MyClass> и набор BindingSource к этому и DataGridView к BindingSource.

Я реализовал IEditableObject таким образом, когда CancelEdit называют, я возвращаюсь свой объект назад к тому, чем это было с a Memberwise.Clone()

Будет изменение моего Списка к BindingList, решают какое-либо из этого и что преимуществами использования является BindingList?

85
задан Jon 11 February 2010 в 11:31
поделиться

2 ответа

A List <> - это просто автоматически изменяющийся массив элементов заданного типа с парой вспомогательных функций (например, : Сортировать).Это просто данные, и вы, вероятно, будете использовать их для выполнения операций с набором объектов в вашей модели.

A BindingList <> - это оболочка для типизированного списка или коллекции, которая реализует интерфейс IBindingList . Это один из стандартных интерфейсов, поддерживающих двустороннюю привязку данных. Он работает путем реализации события ListChanged , которое возникает при добавлении, удалении или установке элементов. Связанные элементы управления прослушивают это событие, чтобы знать, когда обновить их отображение.

Когда вы устанавливаете источник данных BindingSource на List <> , он внутренне создает BindingList <> , чтобы обернуть ваш список. Вы можете сами предварительно обернуть свой список BindingList <> , если хотите получить к нему доступ вне BindingSource, но в остальном это то же самое. Вы также можете наследовать от BindingList <> , чтобы реализовать особое поведение при изменении элементов.

IEditableObject обрабатывается BindingSource. Он вызовет BeginEdit для любого реализующего объекта, когда вы измените данные в любом связанном элементе управления. Затем вы можете вызвать EndEdit / CancelEdit для BindingSource, и он передаст его вашему объекту. Переход к другой строке также вызовет EndEdit.

117
ответ дан 24 November 2019 в 08:22
поделиться

BindingList допускает двустороннюю привязку данных с использованием событий. Список не запускает события при изменении его коллекции.

Я не думаю, что это решит вашу конкретную проблему.

11
ответ дан 24 November 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: