可能重複:
How do I suspend painting for a control and its children?
Winforms Double Buffering防止油漆被調用一次以上
我有繪製一堆用戶定義的控制(其中81)每一個形式其中包含另外十個控件(總計8,100 ish)。它似乎都是按順序繪製的(需要大約1秒左右)。
我已經看了thesetwo問題,跟着IER建議步驟(窗體和自定義的控制,並SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
表格上設置this.DoubleBuffered = true
,但這似乎沒有做任何事情。
是有一種方法可以保存表單的繪畫功能,將其保存在委託中,交換虛擬函數,以便表單不會重新繪製AT ALL,然後將實際功能恢復並觸發。
I假設有一個更標準的方法來做到這一點,但我無法找到它(它不是SuspendLayout
/ResumeLayout
那些只處理佈局邏輯)。
我該怎麼做?
@HansPassant這有什麼好做一點。它完美地繪製,只是緩慢。此外,它並不試圖暫停表單的繪製。我是。這兩個問題如何相關? – soandos
自己幫忙將代碼複製/粘貼到表單中需要30秒。 –
@HansPassant它現在渲染大的黑色方塊,然後立即填充它們(仍然需要大約一秒)。這是否意味着創建所有這些控件需要花費太多時間?我怎麼能衡量這一點? – soandos