Winform 自定義控制元件閃爍問題
阿新 • • 發佈:2019-02-07
winform 自定義控制元件閃爍問題極為讓人頭疼,在網上搜索了很多方法,最後總算是勉強解決,但老實說效果還不是很好。
首先第一種方法:
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();
網上見到的最多的就是這個方法,但基本上沒有看到什麼效果。
第二種方法:
在自定義控制元件中新增的:
protected override CreateParams CreateParams { get { var parms = base.CreateParams; parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN return parms; } }
在呼叫自定義控制元件的窗體內新增的:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
第二種方法解決了我的問題。不過看起來還是很死板,只能說是勉強解決了。而且因為在呼叫自定義控制元件的窗體內新增的方法的關係,窗體上其他控制元件的重繪多少有點兒問題。後來我把這個方法去掉了,發現值需要在自定義控制元件內新增方法貌似也沒什麼問題。
希望以後能有更好的方法解決自定義控制元件不停閃爍的問題。