C# WinForm 用户自定义控件闪烁的问题

C# WinForm 用户自定义控件闪烁的问题
2015年04月24日 21:24:41 傲十郎 阅读数:2981
版权声明:本文为博主郎涯工作室原创文章,未经博主允许不得转载。 https://blog.csdn.net/aoshilang2249/article/details/45251711

    使用WinForm开发,当使用了大量的用户自定义控件UserControl时,界面拖动或切换时就会出现闪烁的问题。解决方法主要就是重写UserControl和Form的CreateParams方法。


前端调用UserControl的窗体Form这样写:

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
            return cp;
        }
    }

UserControl中的代码同样也需要重写,这样写:

    protected override CreateParams CreateParams
    {
        get
        {
            var parms = base.CreateParams;
            parms.Style &= ~0x02000000;  // Turn off WS_CLIPCHILDREN
            return parms;
        }
    }

//from 里面卡顿闪烁
protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
                return cp;
            }
        }

1.在XP机器上,Border不会显示出来!
2.只要在Form上加入 Or &H2000000即可有效果,UserControl可不需加入那一段Code!

 

你可能感兴趣的:(c#,winfrom,xml,.net)