locked
wince下的窗体突然跑到最底层去了,为什么?? RRS feed

  • 问题

  • 遇到一怪事,wince下一程序,需要同时打开三个窗口,一个最大的窗口一直出于底层,另外两个窗口的topmost属性都设置为true,这样这两个小窗口就一直悬浮在最大的窗口上面拉,打开这三个窗口,没有异常,其中一个小窗口里面的一个按钮事件处理过程有个语句,要使最大的底层窗口focus,或者activate。或者show等,一按这个按钮,另外一个小窗口就不见了,就位于大窗口底下去了,无论是采用focus,activate,show,只要是在按钮代码里面激活最大的窗口,另外一个小窗口就会跑到最底层去,但是用鼠标点大窗口去激活他呢则不会出现这样的事情,真是怪事,有没有那个高手解答一下
    补充一下:现在我知道问题再那里了,因为我其实是想做一个wince下的进程内的虚拟键盘,就其中有按钮那个小窗口其实是个软键盘,既然是键盘就要随时浮在顶层,由于键盘必须需向进程内的所有窗体输入字符,为了解决这个问题,我定义了一个类型为form的公共变量ss,我在每个窗体的activated事件里,都令ss=me,然后当我点击软键盘里面的按钮时,就ss.focus,然后刚才就有焦点的窗口就激活了,在这种方式下,虽然激活了底层窗体,但另外一个小窗体却跑到底层去了,唉。。但是怎么解决呢
    2011年5月26日 9:24

答案

  • 您好,

    建议您查看一下被隐藏的的窗口的topmost属性,是否被修改,或者您可以重置一次。第二,我个人理解,focus和鼠标点击不是一回事,focus可以传递到窗口中能捕获focus的控件上,比如Textbox等。如果实在没有别的方法的话,就只能强行激活剩下两个窗体。

    致礼


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月27日 8:11