Windows Mobile Form Automatic Scrollbar
來源:互聯網
上載者:User
從.Net Compact Framework 2.0開始, Form裡面有一個bool類型的新的property, 用來制定是否在控制項超出客戶區的時候需要Form自動添加一個scroll來做滾動。
但是最近碰到的是如果在.net cf 1.1裡面使用這個vScrollbar。還
是和億萬次犯錯誤一樣,每次都覺得這樣的小問題不會是問題,但是實際上就問題來了(看起來每次工作的時候一定要戰戰兢兢,如履薄冰啊:))
在initComponent之後,建立了一堆控制項添加到Form,當然位置肯定超出螢幕了。Debug一看,恩還不錯,
小小調整了一把LargeChange和SmallChange以後基本上就work了。 但是! 但是!
調整到Landscape模式的時候赫然看到的是2個vScrollbar。一
下子昏倒了,怎麼會這樣呢,難道,難道,想了很多的可能行都難以說服自己。後來看了網上的很多評論才知道原來在ppc2003的時候由於曆史原因,系統會
自動給你調整添加一個vScrollbar,這才看到了2個scrollbar。 詭異的很,怎麼辦呢?MSDN上的高人給出瞭解決方案:
GetWindowLong
然後SetWindowLong保證那個style不是什麼什麼scroll就可以了 style &= ~(WS_VSCROLL | WS_HSCROLL);但是我還是找不到要放在什麼合適的地方。。。 總之就是還不工作!
最後沒辦法了,乾脆new了一個Panel,設定大小和ClientSize一樣,然後所有的控制項統統扔在這個裡面,這個世界終於清靜了。熟練的加上那個keyDown, 用來複雜focus的切換。大功告成。
但是,又來了一個但是。在Smartphone上實驗的時候發現他根本不給我拿到KeyDown的機會。所有的焦點切換系統都會給我做。原來的根據KeyDown來切換焦點,調整vScrollbar的value的策略不罩了。沒辦法只好偵聽所有的focus拿到的情況,根據focus的位置來調整vScrollbar的value,等於原來的策略正好反過來了!!
唉,前前後後折騰了2天終於把這個東西搞定了, 真不知道這個Form裡面還有多少未知的奧秘,更不知道什麼時候能直接調整到.Net CF 2.0開發,神啊救救我吧