【发布时间】:2011-03-05 11:55:56
【问题描述】:
我试图找到另一个类似这样的问题,因为它确实看起来像是以前可能被问过的问题;但我没找到。
基本上,我有一个DataGridView,它绑定到BindingList<T>。我知道,总的来说,数据绑定非常好,并且可以节省大量(我们的开发人员的)时间。然而,这个网格存在一个非常大的性能问题。
根据之前的经验,我相当有信心通过在计时器上手动更新DataGridView 中的仅可见单元格而不是实现INotifyPropertyChanged(不是真正的可行选项,因为此网格中的许多值每秒更改数十次)或调用Refresh。但是有一个问题:如果我手动逐个更新网格中的单元格,每次更新都会触发数据绑定对象的相应属性的set,加起来会导致性能显着下降。
确实没有必要进行所有这些set 调用,因为我放入网格单元格中的值是直接从这些属性检索的(所以我基本上是在阅读值,然后将其写回自身)。
如果我可以暂时禁用DataGridView 的此功能,那就太好了:暂时关闭负责根据网格更新更新底层数据源的功能。然后,当我手动完成更新后,重新打开该功能,以便用户的更新影响数据源。
我尝试使用 BindingSource 并将其 DataSource 属性设置为 BindingList<T> 并调用 SuspendBinding/ResumeBinding;但这似乎不起作用。继续拨打set 电话。
有什么方法可以完成我在这里的目标吗?我是不是完全走错了路?
【问题讨论】:
标签: .net winforms data-binding datagridview bindingsource