2010-02-16 219 views
1

我在C#VS2005 .net 2.0中开发的windows应用程序中使用datagridview。DataGridview重绘速度很慢

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

+0

你能代码减少到重复的问题和后最低它 - 或者只是发布你认为是相关的部分。 – ChrisF 2010-02-16 12:14:36

+0

最有可能的解释是,您每次重新绘制网格时都要返回数据源以重新填充网格。 – ChrisF 2010-02-16 12:15:40

+1

你在网格中填入了多少行? – 2010-02-16 12:28:10

回答

0

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

我一直在寻找网络的任何线索,可能会发生什么,到目前为止没有。开始此线程的人没有跟进,或者我们现在可能会有答案,这太糟糕了。

1

我不知道它为什么会起作用,但将DataGridView控件设置为双缓冲工程绝对可行。确保主机窗体上的DoubleBuffered属性也为false。

做完这些之后,我的网格控件从重绘过程中缓慢地进行(不管数据量如何),以至于您几乎可以在进入时计算这些单元格的数量 - 像其他任何控件一样快速重绘。

的DoubleBuffered财产受到保护的DataGridView的,所以你需要创建一个派生类,并设置该属性存在,如:

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