2012-01-23 15 views
16

Cómo capturar el evento del botón de cerrar la ventana (botón X rojo en la esquina superior derecha de la ventana) en formato wpf? También tenemos el evento de cierre, el evento de descarga de la ventana, pero queremos mostrar una ventana emergente si hace clic en el botón de cerrar del formulario wpf.Cómo atrapar el evento del botón de cerrar la ventana (botón X rojo en la esquina superior derecha de la ventana) en formato wpf?

Amablemente ayuda.

+0

Entonces, ¿qué sucedió si se hizo algo en el acto de clausura, ¿trató de algo? – V4Vendetta

Respuesta

26

Utilice el evento Closing en la ventana, se puede manejar como este para evitar que se cierre:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    e.Cancel = true; 
} 
+1

Necesitaba todo el manejador de cierre en el XAML de la ventana respectiva: '' –

+4

Recuerda que este evento también se dispara cuando llamas a 'this.Close()' del código detrás. –

3

si se pulsa el botón de confirmación En el formulario2 hacer la acción, si se pulsa X-botón de hacer nada:

public class Form2 
{ 
    public bool confirm { get; set; } 

    public Form2() 
     { 
      confirm = false; 
      InitializeComponent(); 
     } 

    private void Confirm_Button_Click(object sender, RoutedEventArgs e) 
    { 
     //your code 
     confirm = true; 
     this.Close(); 

    } 

} 

primera forma:

public void Form2_Closing(object sender, CancelEventArgs e) 
     { 
      if(Form2.confirm == false) return; 

      //your code 
     } 
0

En VB.NET:

Private Sub frmMain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 
    ' finalize the class 

    End Sub 

Para desactivar el botón de la forma X:

'===================================================== 
' Disable the X button on the control bar 
'===================================================== 
Private Const CP_NOCLOSE_BUTTON As Integer = &H200 
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams 
    Get 
     Dim myCp As CreateParams = MyBase.CreateParams 
     myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON 
     Return myCp 
    End Get 
End Property 
Cuestiones relacionadas