避免DateTimePicker闪烁的解决方案
生活随笔
收集整理的這篇文章主要介紹了
避免DateTimePicker闪烁的解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 在WinForm上放置一個TabControl,并設置其Dock屬性為Fill。
2. 在其中的一個Tab頁上放置一個DateTimePicker控件
你會發現,當你在XP系統下,Resize Form時,DateTimePicker會閃爍。研究了很長時間,沒有結果。最終放棄C#和Spy++,使用Google研究了一下 :-) 得出結論如下:
需要為DateTimePicker控件添加WS_EX_COMPOSITED Window Style.如下:
????public?class?MyDateTimePicker?:?DateTimePicker????{
????????protected?override?CreateParams?CreateParams
????????{
????????????get
????????????{
????????????????CreateParams?ps?=?base.CreateParams;
????????????????ps.ExStyle?|=?NativeMethods.WS_EX_COMPOSITED /*0x2000000*/;
????????????????return?ps;
????????????}
????????}
????}
這個Style僅僅被Window XP以上系統支持。功能是將Control的所有畫法使用DoubleBuffer優化。(ControlStyles.OptimizedDoubleBuffer似乎僅對WM_PAINT優化,而DateTimePicker的閃爍是由WM_ERASEBKGND引起的)
做個記錄,以便后人查詢。
?
更新:(2008/01/03)??? 注意,這個Style僅僅被Window XP以上操作系統接受,如果在Window 2000下運行添加了這個Style的DateTimePicker將會產生異常。
更新:(2008/02/03)
??? 注意,這個Style會導致DateTimePicker的DropDownButton沒有按下效果。因此,不建議在項目中使用這個方案。關于更詳細的解決方案,稍后我重新寫一篇Blog。
轉載于:https://www.cnblogs.com/Cajon/archive/2007/12/29/Avoid_DateTimePicker_Flicker.html
總結
以上是生活随笔為你收集整理的避免DateTimePicker闪烁的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net performance
- 下一篇: 在水晶报表中实现任意选择指定字段显示-模