2010-02-16 265 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; 
    } 
}