環境說明:
項目中有一個基類窗體BaseForm,有一個自定義控件TextBoxBase,兩個控件都做了一些獨特常規的封裝和重寫,在TextBoxBase中有一點重繪的下劃線,發現在窗體運行之後,在窗體上滾動鼠標滾輪,會導致TextBoxBase下劃線閃爍。
解決辦法:重寫兩個控件的CreateParams方法。
BaseForm中添加:
1 protected override CreateParams CreateParams 2 { 3 get 4 { 5 CreateParams cp = base.CreateParams; 6 cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 7 return cp; 8 } 9 }
TextBoxBase中添加:
1 protected override CreateParams CreateParams 2 { 3 get 4 { 5 var parms = base.CreateParams; 6 parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN 7 return parms; 8 } 9 }
問題解決。