Windows mobile 当用户点击控件外部时,如何隐藏控件

Windows mobile 当用户点击控件外部时,如何隐藏控件,windows-mobile,Windows Mobile,在windows mobile应用程序中,我们将用户控件用作屏幕菜单。 单击用于打开菜单的同一按钮可关闭此功能。 作为一项改进,我们希望在用户在控件外单击时随时关闭菜单 目前,我们已经尝试触发“lostFocus”事件,并在每次显示菜单时使用menu.Focus()。问题是调用menu.Focus()时会立即触发lostFocus事件 有没有办法阻止焦点直接丢失? 或 有没有办法做到这一点?只是一个想法:添加2个布尔值: bool userControlFocused; bool menuFoc

在windows mobile应用程序中,我们将用户控件用作屏幕菜单。 单击用于打开菜单的同一按钮可关闭此功能。 作为一项改进,我们希望在用户在控件外单击时随时关闭菜单

目前,我们已经尝试触发“lostFocus”事件,并在每次显示菜单时使用menu.Focus()。问题是调用menu.Focus()时会立即触发lostFocus事件

有没有办法阻止焦点直接丢失? 或
有没有办法做到这一点?

只是一个想法:添加2个
布尔值:

bool userControlFocused;
bool menuFocused;
当触发
LostFocus
事件时:

private void UserControl1_LoseFocus(object sender, EventArgs e) {
  userControlFocused = UserControl1.Focused;
  if (!userControlFocused && !menuFocused) {
    Close();
  }
}

private void Menu_LostFocus(object sender, EventArgs e) {
  menuFocused = Menu1.Focused;
  if (!userControlFocused && !menuFocused) {
    Close();
  }
}

这里只是随便说说一些想法。

只是一个想法:添加2个
布尔值:

bool userControlFocused;
bool menuFocused;
当触发
LostFocus
事件时:

private void UserControl1_LoseFocus(object sender, EventArgs e) {
  userControlFocused = UserControl1.Focused;
  if (!userControlFocused && !menuFocused) {
    Close();
  }
}

private void Menu_LostFocus(object sender, EventArgs e) {
  menuFocused = Menu1.Focused;
  if (!userControlFocused && !menuFocused) {
    Close();
  }
}

这里,我只是随便说说一些想法。

那么,当您选择一个菜单时,Focus()调用会导致lastFocus()被调用吗?有点奇怪,不是吗?是的,首先触发GotFocus事件,LostFocus事件。所以当您选择菜单时,Focus()调用会导致调用lastFocus()?有点奇怪,不是吗?是的,首先触发GotFocus事件,LostFocus事件。