[WIN]如何让您的UserControl显示时不闪烁
2021-02-04 00:16
                         标签: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# 
	VB 
 
	UserControl的Code 
	C# 
	VB 
	1.在XP机器上,Border不会显示出来! 
	2.只要在Form上加入 Or &H2000000即可有效果,UserControl可不需加入那一段Code! 
	3.如果Form上没有加入 Or &H2000000,而UserControl有加入 And (Not &H2000000)的话,画面上的Label会有显示不出来的状况! 
  原文:大专栏  [WIN]如何让您的UserControl显示时不闪烁 [WIN]如何让您的UserControl显示时不闪烁 标签:rop   return   var   com   padding   ack   net   ase   code    原文地址:https://www.cnblogs.com/petewell/p/11489711.html
	前言
	研究及解决
protected override CreateParams CreateParams {
		
  get {
		
    CreateParams cp = base.CreateParams;
		
    cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
		
    return cp;
		
  }
		
} 
	
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
	
protected override CreateParams CreateParams {
		
  get {
		
    var parms = base.CreateParams;
		
    parms.Style &= ~0x02000000;  // Turn off WS_CLIPCHILDREN
		
    return parms;
		
  }
		
}
	
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
上一篇:c# 字符串格式转换