DataGridview重绘非常缓慢

时间:2010-02-16 12:13:03

标签: .net datagridview delay repaint winapp

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

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

2 个答案:

答案 0 :(得分:1)

我不知道它为什么会起作用,但将DataGridView控件设置为double-buffered是一种绝对的享受。确保host-form上的DoubleBuffered属性也为false。

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

DoubleBuffered属性在DataGridView上受到保护,因此您需要创建派生类并在其中设置属性,例如:

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

答案 1 :(得分:0)

我遇到了同样的问题。 GridView未绑定到数据源。我自己正在构建GridView。当我调整大小(放大)或垂直滚动​​时,我得到相同的落幕效果。这很糟糕。如果我有100或100000行,效果是一样的。如果我将DoubleBuffered设置为true或false,它也是一样的。

我一直在网上寻找可能发生的任何线索,到目前为止还没有。开始这个帖子的人没有跟进,或者我们现在可能有答案,这太糟糕了。