1

在我们的 Windows 移动应用程序中,我们使用 UserControl 作为屏幕菜单。通过单击用于打开菜单的相同按钮来关闭它。作为一项改进,我们希望在用户在控件外部单击时关闭菜单。

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

有没有什么办法可以阻止焦点直接丢失?或者有什么办法可以做到这一点?

4

1 回答 1

1

只是一个想法:添加 2 个Boolean值:

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();
  }
}

只是在这里抛出一些想法。

于 2012-04-28T01:20:57.880 回答