C# 关闭时,WPF窗口将单击路由到后面的窗口!

C# 关闭时,WPF窗口将单击路由到后面的窗口!,c#,wpf,mouseclick-event,C#,Wpf,Mouseclick Event,单击/单击事件也会发送到…后面的任何窗口。 即使是这个虫子 private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e) { App.Current.MainWindow.Visibility = System.Windows.Visibility.Visible; Close(); } MouseDoubleClick是一个直接路由事件,因此即使设

单击/单击事件也会发送到…后面的任何窗口。
即使是这个虫子

    private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        App.Current.MainWindow.Visibility = System.Windows.Visibility.Visible;
        Close();
    }

MouseDoubleClick是一个直接路由事件,因此即使设置
e.Handled=true
也不会影响树上的后续事件。处理双击的建议方法是处理
MouseLeftButtonDown
,并检查
ClickCount==2
。然后,您可以设置
e.Handled=true
,这将防止事件冒泡。

您的问题有点不清楚。那么窗口关闭,然后另一个应用程序的窗口获取事件?或者应用程序的另一个窗口获取事件?您可以尝试设置
e.Handled=true
trued。同样的结果。窗口关闭后,点击会转到鼠标后面的任何位置。如果其他控件使用
HandleEventsTo
订阅,则只需测试
e.Handled
,对吗?请看-我认为这是处理事件的唯一方法。问题是MouseDoubleClick是一个直接事件,尽管我对这意味着什么感到困惑。即使将Handled设置为true,系统仍将继续向树上的UIElements发送事件,e.Handled==false。我已经更新了我的答案。下面的控件仍将以鼠标悬停的方式接收泄漏事件。
    private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        App.Current.MainWindow.Visibility = System.Windows.Visibility.Visible;
        System.Threading.Thread.Sleep(500);
        Close();
    }