1. 程式人生 > >C# 解決winform介面閃屏問題及弊端

C# 解決winform介面閃屏問題及弊端

1 新增以下程式碼:

  1. // 防止閃屏
  2. protectedoverride 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  新增,  下面也可以解決雙緩衝,暫時沒發現什麼問題,但是需要單獨對每個控制元件進行設定緩衝

  1. publicstaticvoid SetDouble(Control cc)  
  2. {  
  3.     cc.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance |   
  4.                  System.Reflection.BindingFlags.NonPublic).SetValue(cc, truenull);  
  5.  }  
使用方法:
  1. SetDouble(this);  
  2. SetDouble(label1);  

也可以試一下這個程式碼

  1. protectedoverridevoid WndProc(ref Message m)  
  2.        {  
  3.            if (m.Msg == 0x0014) // 禁掉清除背景訊息
  4.                return;  
  5.            base.WndProc(ref m);  
  6.        }