0

我试图找到另一个像这样的问题,因为它确实看起来像是以前可能被问过的问题;但我找不到它。

基本上,我有一个DataGridView,它绑定到一个BindingList<T>. 我知道,总的来说,数据绑定非常好,并且可以节省大量(我们的开发人员的)时间。然而,这个网格存在一个非常大的性能问题。

根据以前的经验,我相当有信心通过手动更新计时器中的可见单元格DataGridView而不是实现来大大提高性能INotifyPropertyChanged(这不是一个真正可行的选择,因为此网格中的许多值每次更改数十次第二)或打电话Refresh。但是有一个问题:如果我手动一个一个地更新网格中的单元格,每次更新都会触发set数据绑定对象的相应属性,加起来会导致性能显着下降。

确实没有必要进行所有这些set调用,因为我放入网格单元格的值是直接这些属性中检索的(所以我基​​本上是在读取一个值,然后将其写回自身)。

如果我可以暂时禁用DataGridView: 的此功能,暂时关闭负责根据网格更新更新底层数据源的功能,那就太好了。然后,当我手动完成更新后,重新打开该功能,以便用户的更新确实会影响数据源。

我尝试使用 aBindingSource并将其DataSource属性设置为BindingList<T>并调用SuspendBinding/ ResumeBinding; 但这似乎不起作用。set电话还在继续。

有什么方法可以完成我在这里的目标吗?我是否完全走错了路?

4

1 回答 1

1

我真的没有直接回答您的问题的知识,但我发现了一篇 MSDN 文章不久前讨论了一种仅根据需要加载/更新行的方法。

http://msdn.microsoft.com/en-us/library/ms171624.aspx

这可能是一个可行的解决方案,或者它可能会激发您制定另一种方法。

如果没有,希望有人能尽快给你一个真正的答案o.-

于 2010-06-18T16:25:11.567 回答