WinForm 載入自定義控制項閃爍問題

2022-02-26 08:29:43 字數 1482 閱讀 4598

winform載入多個自定義控制項時,會出現很嚴重的閃爍問題,很卡,一塊一塊的載入(像開啟網頁時,網路很卡的那種感覺)簡直沒法忍受。

在網上搜尋了好久,網上大部分的方法是一下4種,但是都不能有效的解決問題。

1.將doublebuffered 設定 true,用雙快取處理form介面內容載入,可以提高頁面顯示質量。或者

setstyle(controlstyles.userpaint | controlstyles.allpaintinginwmpaint | controlstyles.optimizeddoublebuffer, true

);this.updatestyles();

2.把構造方法裡的內容盡量移動到form_load事件裡處理。

3.把控制項繪製的pint()寫到一起繪製。

4.在控制項使用後有變化時可以採用先 掛起 再顯示的方法,提高顯示質量。

1

this

.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

你只有試了你就會發現,以上這幾種辦法並不能解決問題。

解決辦法:

在呼叫自定義控制項的窗體內新增的:

1

protected

override

createparams createparams

29 }

在自定義控制項中新增的:

protected

override

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 ...