2010-09-15 153 views

回答

53

這隻對窗體本身產生影響,而不是子控件。如果你有很多它們,那麼他們需要輪流自己繪畫的時間就會變得明顯,它會留下一個矩形的洞,在這個洞中控制不會被填滿,直到兒童控制器開始轉動。

你需要對付這個問題是雙緩衝整個表格的控件。自從Windows XP使WS_EX_COMPOSITED風格標誌可用之後,這是一個可用的選項。粘貼到您的形式將其打開:

protected override CreateParams CreateParams { 
    get { 
    CreateParams cp = base.CreateParams; 
    cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
    return cp; 
    } 
} 

它不加快畫可言,但形式的延遲後,卡在屏幕上。消除可見的油漆工件。確定延遲需要不使用控件。你可以通過使用OnPaint方法來繪製'控件',並使OnMouseClick事件明白用戶點擊'控件'的方式。

+0

WS_EX_COMPOSITED僅適用於win7/vista下的經典主題,不適用於航空主題。有人知道在這種情況下的解決方案? – KevinBui 2011-12-18 17:05:04

+4

@Dhanhan - 這對Aero來說很有效 – 2012-06-07 22:30:18

+0

它像一個魅力一樣工作(不是指Windows 8的魅力,但我希望它能在Windows 8上工作,如果需要的話,也可以在XP上工作)。 – 2012-08-21 00:06:48