【问题标题】:DataGridview repaints very slowlyDataGridview 重绘非常缓慢
【发布时间】:2010-02-16 12:13:03
【问题描述】:

我在用 C# VS2005 .net 2.0 开发的 windows 应用程序中使用 datagridview。

Datagridview 提供了一个业务对象列表。在开始以落幕方式显示 datagridview 中的行之前,它需要 2-3 秒的恼人延迟。当我从任何其他窗口切换回我的应用程序时,它会以相同的落幕方式开始重新绘制过程。 这很烦人。请有人帮我解决这个问题!

【问题讨论】:

  • 您能否将重复问题的代码减少到最少并发布 - 或者只是发布您认为相关的部分。
  • 最可能的解释是,每次重新绘制网格时,您都会返回数据源重新填充网格。
  • 你在那个网格里填了多少行?

标签: .net datagridview delay repaint winapp


【解决方案1】:

我不知道它为什么起作用,但是将 DataGridView 控件设置为双缓冲绝对是一种享受。确保主机表单上的 DoubleBuffered 属性也为 false。

完成此操作后,我的网格控件从重绘变得如此缓慢(无论数据量如何),以至于您几乎可以在单元格进入时对其进行计数, - 到重绘与任何其他控件一样快。

DoubleBuffered 属性在 DataGridView 上受到保护,因此您需要创建一个派生类并在那里设置该属性,例如:

class DoubleBufferDataGrid : DataGridView
{
    public DoubleBufferDataGrid()
        : base()
    {
        this.DoubleBuffered = true;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2013-07-07
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多