避免DateTimePicker闪烁的解决方案
1. 在WinForm上放置一個(gè)TabControl,并設(shè)置其Dock屬性為Fill。
2. 在其中的一個(gè)Tab頁(yè)上放置一個(gè)DateTimePicker控件
你會(huì)發(fā)現(xiàn),當(dāng)你在XP系統(tǒng)下,Resize Form時(shí),DateTimePicker會(huì)閃爍。研究了很長(zhǎng)時(shí)間,沒(méi)有結(jié)果。最終放棄C#和Spy++,使用Google研究了一下 :-) 得出結(jié)論如下:
需要為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;
????????????}
????????}
????}
這個(gè)Style僅僅被Window XP以上系統(tǒng)支持。功能是將Control的所有畫(huà)法使用DoubleBuffer優(yōu)化。(ControlStyles.OptimizedDoubleBuffer似乎僅對(duì)WM_PAINT優(yōu)化,而DateTimePicker的閃爍是由WM_ERASEBKGND引起的)
做個(gè)記錄,以便后人查詢。
?
更新:(2008/01/03)??? 注意,這個(gè)Style僅僅被Window XP以上操作系統(tǒng)接受,如果在Window 2000下運(yùn)行添加了這個(gè)Style的DateTimePicker將會(huì)產(chǎn)生異常。
更新:(2008/02/03)
??? 注意,這個(gè)Style會(huì)導(dǎo)致DateTimePicker的DropDownButton沒(méi)有按下效果。因此,不建議在項(xiàng)目中使用這個(gè)方案。關(guān)于更詳細(xì)的解決方案,稍后我重新寫一篇Blog。
轉(zhuǎn)載于:https://www.cnblogs.com/Cajon/archive/2007/12/29/Avoid_DateTimePicker_Flicker.html
總結(jié)
以上是生活随笔為你收集整理的避免DateTimePicker闪烁的解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: asp.net performance
- 下一篇: 在水晶报表中实现任意选择指定字段显示-模