我正在开发一个Windows Mobile 6.5应用程序,并且在关注添加到表单中的UserControl的子控件时,我的表单会失去焦点...有时候。
在我的应用程序中,我通过向主窗体控件集合添加和删除用户控件来在屏幕之间导航。
IView nextView = (IView)Activator.CreateInstance(map.View);
this.Controls.Remove((UserControl)this.currentView);
this.currentView = nextView;
this.Controls.Add((UserControl)this.currentView);
我在屏幕之间导航的基本流程是:
首先添加UserControl A
导航到UserControl B
导航回UserControl A
所有这一切都运行良好,在第一次添加UserControl时,表单被聚焦,子控件也有焦点。
但是当我从UserControl B导航回UserControl A时,表单会失去焦点,但前提是我在最后一步尝试关注子控件。在我的应用程序中,这导致我无法使用电话硬件按钮在网格中导航。
关于为什么主要形式失去焦点的任何想法?
答案 0 :(得分:2)
事实证明,当我导航回UserControl A时,通过在方法中间触发导航事件,UserControl B中的代码继续执行,从而无法专注于UserControl A.
我原本希望当我从Form.Controls中删除UserControl B(然后处理它)时,该方法的其余部分将不会被执行,就像Response.Redirect对于web一样。
我通过添加一个返回来解决问题;在UserControl B中触发OnNavigation事件后的语句。