绑定到BindingList的DataGridView可以准确刷新,但不能立即刷新

时间:2015-09-29 11:34:41

标签: .net winforms data-binding datagridview

我知道这个问题很像this other one,但我仍然无法找到答案。

事实是,我的班级 实现了INotifyPropertyChanged,而我的网格 更新......就不会马上进行。当每个更改时,值以“突发”而不是实时更新。突发间隔约3秒,此时一大堆值同时更新。我希望网格单元能够立即反映值更新,而不是批量反映。这就好像网格试图通过隐藏大量的个体变化来改善性能,有利于在UI中反映它们之前等待一堆变化积累。

我的特定绑定方案:

  • 的Winforms
  • 的DataGridView
  • grid DataSource是一个BindingSource
  • BindingSource的源是MyClass的SortableBindingList
  • SortableBindingList继承T
  • 的BindingList
  • MyClass实现了INotifyPropertyChanged
  • BackgroundWorker线程对列表项的各个属性进行更改,一次运行5个线程

更新

答案基本上是这样的: https://msdn.microsoft.com/en-us/library/ms171728.aspx

然而,由于这是一个以我为最终用户的宠物项目,我现在不想达到这个长度,所以我刚刚抓住了异常,并且会忍受稍微不一致的网格更新行为。至少我明白为什么会这样。

1 个答案:

答案 0 :(得分:0)

尝试在主模块的第一行将DoubleBuffer实现到Grid中。 像这样的东西(VB.NET中的代码) - 更改网格控件的名称:

    <GridControlName>.GetType.InvokeMember("DoubleBuffered", _
                                    Reflection.BindingFlags.NonPublic Or _
                                    Reflection.BindingFlags.Instance Or _
                                    System.Reflection.BindingFlags.SetProperty, _
                                    Nothing, <gridControlName>, New Object() {True})