1. 程式人生 > >Winform 自定義控制元件閃爍問題

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;

            }
        } 

 第二種方法解決了我的問題。不過看起來還是很死板,只能說是勉強解決了。而且因為在呼叫自定義控制元件的窗體內新增的方法的關係,窗體上其他控制元件的重繪多少有點兒問題。後來我把這個方法去掉了,發現值需要在自定義控制元件內新增方法貌似也沒什麼問題。

希望以後能有更好的方法解決自定義控制元件不停閃爍的問題。