2011-01-07 10 views
6

Sto cercando di farlo in modo che all'utente venga richiesto di confermare l'uscita dal mio programma in C#, ma per qualche motivo, se dicono "sì" vorrebbero uscire, la finestra di conferma comparirà ancora. Non riesco a capire perché.Doppia conferma all'uscita

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

casi in cui è presente il codice viene eseguito? –

+0

Suppongo che tu stia gestendo l'evento Chiudi modulo. Non penso che tu abbia bisogno di Application.Exit() –

+0

Sì, chiusura modulo, ma ho bisogno di application.exit() perché c'è un'altra finestra aperta che devo chiudere allo stesso tempo. – Sean

risposta

4

Ah, avete controllato il CloseReason per l'evento FormClosing? Penso che potresti ottenere lo stesso evento per due diversi motivi (anche se non mi aspetto esattamente che succeda normalmente); controlla il tuo FormClosingEventArgs per vedere quali sono i parametri.

3

Ah, ho capito come risolverlo. Ho rimosso Application.Exit(); evento dall'evento FormClosing e spostato nell'evento FormClosed. Funziona tutto ora.

7

Utilizzare questa

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; 
     }   
    }