Winform 自定义控件闪烁问题

winform 自定义控件闪烁问题极为让人头疼,在网上搜索了很多方法,最后总算是勉强解决,但老实说效果还不是很好。

首先第一种方法:

SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();

 网上见到的最多的就是这个方法,但基本上没有看到什么效果。

第二种方法:

在自定义控件中添加的:

        protected override CreateParams CreateParams
        {
            get
            {
                var parms = base.CreateParams;

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

                return parms;
            }
        }

 在调用自定义控件的窗体内添加的:

        protected override CreateParams CreateParams
        {
            get
            {

                CreateParams cp = base.CreateParams;

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

                return cp;

            }
        } 

 第二种方法解决了我的问题。不过看起来还是很死板,只能说是勉强解决了。而且因为在调用自定义控件的窗体内添加的方法的关系,窗体上其他控件的重绘多少有点儿问题。后来我把这个方法去掉了,发现值需要在自定义控件内添加方法貌似也没什么问题。

希望以后能有更好的方法解决自定义控件不停闪烁的问题。

原文地址:https://www.cnblogs.com/rogation/p/3104024.html