繁体   English   中英

List <T> vs BindingList <T>优点/ DisAdvantages

[英]List<T> vs BindingList<T> Advantages/DisAdvantages

有人可以描述两者之间的区别对于我的项目。

目前我有一个List<MyClass>并将BindingSource设置为它,并将DataGridView设置为BindingSource。

我已经实现了IEditableObject所以当调用CancelEdit时,我将我的对象恢复到使用Memberwise.Clone()

将我的List更改为BindingList会解决这个问题,使用BindingList有什么好处?

List<>只是一个自动调整大小的数组,给定类型的项目,带有几个辅助函数(例如:sort)。 它只是数据,您可能会使用它来对模型中的一组对象运行操作。

BindingList<>是类型化列表或集合的包装,它实现IBindingList接口。 这是支持双向数据绑定的标准接口之一。 它通过实现ListChanged事件来工作,该事件是在添加,删除或设置项目时引发的。 绑定控件侦听此事件以了解何时刷新其显示。

当您将BindingSource的DataSource设置为List<> ,它会在内部创建一个BindingList<>来包装您的列表。 如果你想在BindingSource之外访问它,你可能想用BindingList<>自己预先包装你的列表,但是否则它就是一样的。 您还可以从BindingList<>继承以在更改项目时实现特殊行为。

IEditableObject由BindingSource处理。 当您更改任何绑定控件中的数据时,它将在任何实现对象上调用BeginEdit。 然后,您可以在BindingSource上调用EndEdit / CancelEdit,它会将它传递给您的对象。 移动到另一行也会调用EndEdit。

BindingList允许使用事件进行双向数据绑定,List不会在其集合发生更改时触发事件。

我不认为它会解决你的特殊问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM