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