C# 解决winform界面闪屏问题及弊端

1 添加以下代码:

 

     
        // 防止闪屏
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }

 

经验总结:

 

    1 如果使用此代码了,且部分界面不能显示,就是此代码造成的

          a    我在一个界面上用了3个panel,并且每个panel显示编码器的图像,界面切换时发现只有三个panel图像,其他都不见了,我把这个代码去掉后就显示正常了,具体什么原因就不知道了。

         b   有一次我给form添加了个背景图片,切换了几次背景不见了,去掉代码就好了。

 

   多做单元测试,将功能在demo里测试,demo里不需要加什么双缓冲等等,如果demo里有问题,那么就是功能问题了。

 

2016-8-18  添加,  下面也可以解决双缓冲,暂时没发现什么问题,但是需要单独对每个控件进行设置缓冲

 public static void SetDouble(Control cc)
 {

     cc.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | 
                  System.Reflection.BindingFlags.NonPublic).SetValue(cc, true, null);

  }

使用方法:

SetDouble(this);
SetDouble(label1);

 

也可以试一下这个代码

 protected override void WndProc(ref Message m)
        {

            if (m.Msg == 0x0014) // 禁掉清除背景消息

                return;

            base.WndProc(ref m);

        }

 

 

 

 

 

 

你可能感兴趣的:(C#,开发总结)