2012-10-15 295 views
3

我遇到了一些問題,有些電腦(很少)在使用我們的應用程序時開始閃爍。我發現了一些奇怪的代碼,在我們的應用程序的主要形式有:屏幕閃爍問題

protected override CreateParams CreateParams 
    { 
     get 
     {     
      var cp = base.CreateParams; 
      cp.ExStyle |= 0x02000000;//composite window. Composite windows do not render/flickr when controls are born. This speeds up loading. 
      return cp; 
     } 
    } 

的代碼似乎是從網上source,他們警告來源:

你應該知道的事實,但是,這隻適用於 環境,其中WM_PAINT中的所有控件繪製(層次結構內)都是 。使用其他/異步方式將 渲染到層次結構中的控件中的應用程序可能會存在導致不需要的行爲的問題。

WM_PAINT究竟是什麼?他們的意思是所有的控件都需要通過win32 API調用來繪製,或者這是在Load事件中正常發生的事情嗎?

有一個說法說,代碼被添加到減少有關閃爍的錯誤報告......我只是想知道他們是否把這個嬰兒洗出來的洗澡水。

+4

參見[這個答案] TRY(http://stackoverflow.com/a/2613272/719186)。 – LarsTech

+0

WM_PAINT是Win32 Paint消息...在WinForms中表現爲Control.Paint。 –

+0

在構造函數中使用this解決了在我的情況下閃爍:SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint,true); – aliassce

回答