标签:rop return var com padding ack net ase code
[WIN]如何让您的UserControl显示时不闪烁
之前将.net 1.1 Windows Form程序升级到.net 4.0,结果在开画面时,闪的非常利害!? 于是就开始找解决方法。
开始找到了设定DoubleBuffer=true,这个有一点点用,在高档的机器上面,但是在4年前的NB问题还是一样,尤其是当画面对象很多时,感觉是一个一个画出来! 还是被USER当~~
后来找到了“How to fix the flickering in User controls”,照他的方式来做,性能果然是一粒一的好呀!
他的方式是在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
1.在XP机器上,Border不会显示出来!
2.只要在Form上加入 Or &H2000000即可有效果,UserControl可不需加入那一段Code!
3.如果Form上没有加入 Or &H2000000,而UserControl有加入 And (Not &H2000000)的话,画面上的Label会有显示不出来的状况!
原文:大专栏 [WIN]如何让您的UserControl显示时不闪烁
标签:rop return var com padding ack net ase code
原文地址:https://www.cnblogs.com/petewell/p/11489711.html