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

1 添加以下代码:

[csharp]  view plain  copy
  1. // 防止闪屏  
  2. protected override CreateParams CreateParams  
  3. {  
  4.     get  
  5.     {  
  6.         CreateParams cp = base.CreateParams;  
  7.         cp.ExStyle |= 0x02000000;  
  8.         return cp;  
  9.     }  
  10. }  

经验总结:

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

          a    我在一个界面上用了3个panel,并且每个panel显示编码器的图像,界面切换时发现只有三个panel图像,其他都不见了,

    我把这个代码去掉后就显示正常了,具体什么原因就不知道了。

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


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


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

[csharp]  view plain  copy
  1. public static void SetDouble(Control cc)  
  2. {  
  3.   
  4.     cc.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance |   
  5.                  System.Reflection.BindingFlags.NonPublic).SetValue(cc, truenull);  
  6.   
  7.  }  
使用方法:

[csharp]  view plain  copy
  1. SetDouble(this);  
  2. SetDouble(label1);  

也可以试一下这个代码

[csharp]  view plain  copy
  1. protected override void WndProc(ref Message m)  
  2.        {  
  3.   
  4.            if (m.Msg == 0x0014) // 禁掉清除背景消息  
  5.   
  6.                return;  
  7.   
  8.            base.WndProc(ref m);  
  9.   
  10.        }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值