【问题标题】:Can I temporarily prevent manual changes to a DataGridView from updating the underlying data source?我可以暂时阻止对 DataGridView 的手动更改以更新基础数据源吗?
【发布时间】: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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2012-05-21
      • 1970-01-01
      相关资源
      最近更新 更多