在用C#開發WinForm程序時,常發現TabControl出現嚴重的閃爍問題,這主要是由於TabControl控件在實現時會繪制默認的窗口背景。其實以下一段簡單的代碼可以有效的緩解該問題的發生。這就是技巧的作用,不需要理解太多的知識,但需要多多積累,就能做到事半功倍的效果。 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Windows.Forms; 5 namespace WfGUI.Forms 6 { 7 ///<summary> 8 /// 不會閃爍的TabContriol 9 /// </summary> 10 public class NoFlashTabControl : TabControl 11 { 12 ///<summary> 13 /// 構造函數,設置控件風格 14 ///</summary> 15 public NewTabControl() 16 { 17 SetStyle 18 ( ControlStyles.AllPaintingInWmPaint //全部在窗口繪制消息中繪圖 19 | ControlStyles.OptimizedDoubleBuffer //使用雙緩沖 20 , true); 21 } 22 ///<summary> 23 /// 設置控件窗口創建參數的擴展風格 24 ///</summary> 25 protected override CreateParams CreateParams 26 { 27 get 28 { 29 CreateParams cp = base.CreateParams; 30 cp.ExStyle |= 0 x02000000; 31 return cp; 32 } 33 } 34 } 35 }