winform載入多個自定義控制項時,會出現很嚴重的閃爍問題,很卡,一塊一塊的載入(像開啟網頁時,網路很卡的那種感覺)簡直沒法忍受。
在網上搜尋了好久,網上大部分的方法是一下4種,但是都不能有效的解決問題。
1.將doublebuffered 設定 true,用雙快取處理form介面內容載入,可以提高頁面顯示質量。或者
setstyle(controlstyles.userpaint | controlstyles.allpaintinginwmpaint | controlstyles.optimizeddoublebuffer, true);this.updatestyles();
2.把構造方法裡的內容盡量移動到form_load事件裡處理。
3.把控制項繪製的pint()寫到一起繪製。
4.在控制項使用後有變化時可以採用先 掛起 再顯示的方法,提高顯示質量。
1this
.tablelayoutpanel2.suspendlayout();
2this
.suspendlayout();
3tablelayoutpanel2.controls.clear();
45 tablelayoutpanel2.columncount =value.columncount;
6tablelayoutpanel2.columnstyles.clear();
7for (int i = 0; i < this.tablelayoutpanel2.columncount; i++)
1011
this.tablelayoutpanel2.rowcount = value.reservedcount /value.columncount;
12tablelayoutpanel2.rowstyles.clear();
13for (int i = 0; i < tablelayoutpanel2.rowcount; i++)
1617
//動態新增控制項
18//
在這兒新增你的**
19...
2021
22 tablelayoutpanel2.resumelayout(true
);23
this.resumelayout(true
);24
你只有試了你就會發現,以上這幾種辦法並不能解決問題。
解決辦法:
在呼叫自定義控制項的窗體內新增的:
1protected
override
createparams createparams
29 }
在自定義控制項中新增的:
protectedoverride
createparams createparams
}
WinForm 建立自定義控制項
雖然vs為我們提供了很多控制項可以使用,但有時候這些控制項仍然不能滿足我們的要求,比如我們要對部分控制項進行一些個性化的定製,例如美化控制項,這時候就需要自己繪製控制項,或是在原有控制項的基礎上進行修改 自定義控制項分為三種 1 組合控制項 compositecontrols 在原有控制項的基礎上根...
WinForm自定義Loading控制項
在vs2008下封裝winform自定義loading控制項。autocircle.cs封裝了旋轉的圓形,直接在裡面新增label的話,計算圓形扇面的方法有點小複雜,所以在loadingpanel.cs將autocircle和label封裝在一起。該控制項中提供了當loadingpanel狀態變化時...
winform自定義分頁控制項
1 控制項 public partial class pagercontrol usercontrol endregion region 分頁欄位和屬性 private int pageindex 1 當前頁面 public virtual intpageindex set private int ...