(vb.net/C#)防止自定义的用户控件闪烁方法

文章来源:365jz.com     点击数:138    更新时间:2017-11-12 13:23   参与评论
最近在开发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

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (138人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------