在我们的 Windows 移动应用程序中,我们使用 UserControl 作为屏幕菜单。通过单击用于打开菜单的相同按钮来关闭它。作为一项改进,我们希望在用户在控件外部单击时关闭菜单。
目前我们已经尝试通过触发“lostFocus”事件并在每次显示菜单时使用 menu.Focus()。问题是当 menu.Focus() 被调用时 lostFocus-event 被立即触发。
有没有什么办法可以阻止焦点直接丢失?或者有什么办法可以做到这一点?
在我们的 Windows 移动应用程序中,我们使用 UserControl 作为屏幕菜单。通过单击用于打开菜单的相同按钮来关闭它。作为一项改进,我们希望在用户在控件外部单击时关闭菜单。
目前我们已经尝试通过触发“lostFocus”事件并在每次显示菜单时使用 menu.Focus()。问题是当 menu.Focus() 被调用时 lostFocus-event 被立即触发。
有没有什么办法可以阻止焦点直接丢失?或者有什么办法可以做到这一点?
只是一个想法:添加 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();
}
}
只是在这里抛出一些想法。