gpt4 book ai didi

c# - List 与 BindingList 优点/缺点

转载 作者:IT王子 更新时间:2023-10-29 03:38:25 27 4
gpt4 key购买 nike

谁能描述一下我的项目两者之间的区别。

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

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

将我的 List 更改为 BindingList 是否可以解决任何问题?使用 BindingList 的优势是什么?

最佳答案

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

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

当您将 Bi​​ndingSource 的数据源设置为 List<> 时, 它在内部创建一个 BindingList<>包装你的 list 。你可能想用 BindingList<> 预先包装你的列表如果你想在 BindingSource 之外访问它,你自己就可以,但除此之外都是一样的。你也可以继承自 BindingList<>在更改项目时实现特殊行为。

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

关于c# - List<T> 与 BindingList<T> 优点/缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243950/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com