您的位置:首页 > 其它

很犀利的防止自定义的用户控件闪烁方法

2012-12-14 14:06 363 查看
最近在开发WinForm系统时,采用了大量的自定义用户控件,完全运用面向对象,采用领域驱动设计开发方式。这种方式前期工作就是开发大量的自定义用户控件,结果把这些控件放置在窗体上运行时,在切换界面发现有闪烁现象,控件越多,闪烁的越厉害。找了许久,终于找到了这个方法,很犀利,很有效。贴在这里。感谢原作者。

解决方式是在Form及UserControl上重写CreateParams,程式如下,

Form上的Code

C#

protected override CreateParams CreateParams {

get {

CreateParams cp = base.CreateParams;

cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED

return cp;

}

}


VB

Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams

Get

Dim cp As CreateParams = MyBase.CreateParams

cp.ExStyle = cp.ExStyle Or &H2000000

' Turn on WS_EX_COMPOSITED

Return cp

End Get

End Property




UserControl的Code

C#

protected override CreateParams CreateParams {

get {

var parms = base.CreateParams;

parms.Style &= ~0x02000000;  // Turn off WS_CLIPCHILDREN

return parms;

}

}


VB

Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams

Get

Dim parms As System.Windows.Forms.CreateParams = MyBase.CreateParams

'Turn off WS_CLIPCHILDREN

parms.Style = (parms.Style And (Not &H2000000))

Return parms

End Get

End Property





參考資料:How
to fix the flickering in User controls

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: