2011-01-07 13 views
6

Estoy tratando de hacerlo para que se solicite al usuario que confirme salir de mi programa en C#, pero por alguna razón, si dicen "sí" les gustaría salir, aparecerá el cuadro de confirmación de nuevo. No puedo entender por qué.Confirmación doble en la salida

if (MessageBox.Show("Are you sure you want to exit?", "Confirm exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
    else { Application.Exit(); } 
+0

donde se está el código de ejecución? –

+0

Supongo que está manejando el evento Form Close. No creo que necesite Application.Exit() –

+0

Sí, cierre de formulario, pero sí necesito application.exit() ya que hay otra ventana abierta que necesito cerrar al mismo tiempo. – Sean

Respuesta

4

Ah, ¿verificó la CloseReason para el evento FormClosing? Creo que puede obtener el mismo evento por dos razones diferentes (aunque no espero exactamente que eso suceda normalmente); revise su FormClosingEventArgs para ver cuáles son los parámetros.

3

Ah, he descubierto cómo solucionarlo. Eliminé Application.Exit(); evento del evento FormClosing, y lo movió al evento FormClosed. Todo funciona ahora.

7

Utilice esta

private void frmMain_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (MessageBox.Show("Are you sure you want to close?", "Infomate", MessageBoxButtons.YesNo) == DialogResult.No) 
     { 
      e.Cancel = true; 
     }   
    }