2012-01-18 10 views

Respuesta

11

Es un problema conocido.

Use esto en lugar

yourWindow.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted; 

    private void Dispatcher_ShutdownStarted(object sender, EventArgs e) 
    { 
     //do what you want to do on closing 
    } 

Leer this para más detalles

Editar

Si anteriormente no funciona probar este

yourWindow.Closing += new CancelEventHandler(YourWindow_Closing); 

void YourWindow_Closing(object sender, CancelEventArgs e) 
{ 

} 
+1

Este evento también no está disparando después obj.Close(). Solo se activa cuando se cierra toda la aplicación. – HotTester

+0

usted está haciendo 'obj.Dispatcher.ShutdownStarted' ¿verdad? –

+0

Sí. Creé Dispatcher.ShutdownStarted + = Dispatcher_ShutdownStarted; en el constructor de la ventana de diálogo y escribe su evento en la función como se indica arriba. – HotTester

0

si realmente desea conseguir conf La conclusión del cierre creo que es mejor comprender el ciclo de vida de una ventana y los eventos relevantes que plantea.

Sin embargo, en mi opinión, la mejor fuente de confirmación es el evento Closed. Otras formas marco tal vez no fiables

eventos finales

Cuando se cierra una ventana, se plantean dos eventos: Closing y Closed.

El cierre se levanta antes de que se cierre la ventana, y proporciona un mecanismo por el que se puede evitar el cierre de la ventana. Un motivo común para evitar el cierre de la ventana es si el contenido de la ventana contiene datos modificados. En esta situación, el evento de cierre se puede manejar para determinar si los datos están sucios y, de ser así, preguntar al usuario si continúa cerrando la ventana sin guardar los datos o cancelar el cierre de la ventana . El siguiente ejemplo muestra los aspectos clave de que tratan el cierre.

Adicionalmente

El controlador de eventos de cierre se pasa a CancelEventArgs, que implementa la propiedad BooleanCancel que se establece en true para prevenir una ventana de cierre. +

Si no se gestiona el cierre, o se maneja pero no se cancela, la ventana se cerrará. Justo antes de que se cierre una ventana, Cerrado es levantado. En este punto, no se puede evitar que una ventana se cierre.

Nota

Mientras que una ventana se puede cerrar de forma explícita a través de los mecanismos previstos en las áreas que no son clientes y clientes, una ventana puede ser también implícita cerrado como consecuencia de la conducta en otra partes de la aplicación o de Windows, incluyendo los siguientes:

  • un usuario cierra o se cierra hacer wn Windows.

  • El propietario de una ventana se cierra.

  • La ventana principal de la aplicación está cerrada y ShutdownMode es OnMainWindowClose.

  • Aparece el apagado.

todas las ventanas de por vida Eventos

La ilustración siguiente muestra la secuencia de los principales sucesos en el tiempo de vida de una ventana.

enter image description here

La ilustración siguiente muestra la secuencia de los principales sucesos en el tiempo de vida de una ventana que se muestra sin la activación (ShowActivated se establece en false antes se muestra la ventana).

enter image description here

Cuestiones relacionadas