我的应用程序有AlwaysOnTop
行为,我希望它在鼠标离开时失去焦点。有一些按钮与上下文菜单。问题是,当下一个ContextMenu
打开MouseLeave
事件自动触发,即使鼠标仍然在我的窗口的子窗口,它立即关闭,因为我将焦点设置到其他外部应用程序当ContextMenu打开时MouseLeave触发器
private void This_MouseLeave(object sender, MouseEventArgs e)
{
if (!this.IsMouseOver)
{
OtherExternalWindow.Focus();
}
}
我曾尝试添加一个检查,如果鼠标没有结束,但似乎上下文菜单不被视为我的窗口(?)的孩子。我认为这可以通过命名我的所有ContextMenus并检查它们中的任何一个是否打开来实现,但是我希望避免这种方法,除非这是不可能的。
如何在鼠标离开时切换焦点,但不打破上下文菜单行为?
ContextMenu不是您的窗口的子项。它本身就是一种窗户。所以当鼠标移过ContextMenu时,它实际上会离开你的窗口。 – mm8