【C#.Net】解決UserControl捲動閃爍的問題

  • 835
  • 0

自製的使用者控制項(UserControl)在畫面捲動時,常常會有閃爍的問題,爬文爬了好久終於找到解決方法,趕快記錄下來。

UserControl增加底下程式碼:



        /// <summary>
        /// 覆寫CreateParams方法,解決自訂UserControl捲動時閃爍的問題
        /// 自訂控件的父層要 Turn on WS_EX_COMPOSITED
        /// 自訂控件要 Turn off WS_CLIPCHILDREN (***)
        /// </summary>
        protected override CreateParams CreateParams
        {
            get
            {
                var parms = base.CreateParams;
                parms.Style &= ~0x02000000;  // Turn off WS_CLIPCHILDREN
                return parms;
            }
        }

放置UserControl的容器,例如 Form 或其他的 UserControl,增加底下程式碼:



        /// <summary>
        /// 覆寫CreateParams方法,解決自訂UserControl捲動時閃爍的問題
        /// 自訂控件的父層要 Turn on WS_EX_COMPOSITED (***)
        /// 自訂控件要 Turn off WS_CLIPCHILDREN
        /// </summary>
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
                return cp;
            }
        }