Windows Mobile Form Automatic Scrollbar

  从.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开发,神啊救救我吧

你可能感兴趣的:(windows,.net,工作,mobile,scroll)