WPF Window enruta los clics a la ventana detrás cuando se cierra.

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

A evento de clic / clic también se envía a cualquier ventana detrás ...
Incluso estos errores ...

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

preguntado el 16 de mayo de 11 a las 17:05

No está claro lo que estás preguntando. ¿Entonces la ventana se cierra y luego la ventana de otra aplicación obtiene el evento? ¿O otra ventana de su aplicación recibe el evento? Podrías intentar configurar e.Handled = true -

Intentó. Mismos resultados. El clic va a lo que estaba detrás del mouse después de que se cierra la ventana. -

1 Respuestas

MouseDoubleClick es un evento enrutado directo y, como tal, incluso la configuración e.Handled = true no afectará los eventos posteriores en el árbol. El método sugerido para manejar un doble clic es manejar MouseLeftButtonDowny compruebe ClickCount == 2. A continuación, puede configurar e.Handled = true, lo que debería evitar que el evento burbujee.

contestado el 16 de mayo de 11 a las 21:05

Otros controles solo tienen que probar e.Handled si se suscribieron con handledEventsToo, ¿derecho? Ver AddHandler - Creo que esta es la única forma de controlar los eventos. - default.kramer

El problema es que MouseDoubleClick es un evento directo, aunque me confundí sobre lo que eso significaba. Incluso si configura Handled como verdadero para él, el sistema continuará enviando el evento a UIElements arriba del árbol, con e.Handled == false. Actualicé mi respuesta. - dlev

El control que se encuentra debajo seguirá captando el evento filtrado como MouseLeftButtonUp. - Jeremy

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.