2011-01-07 16 views
6

Ich versuche es so zu machen, dass der Benutzer aufgefordert wird zu bestätigen, mein Programm in C# zu verlassen, aber aus irgendeinem Grund, wenn sie "ja" sagen möchten, würde die Bestätigungsbox auftauchen nochmal. Ich kann nicht herausfinden warum.Doppelte Bestätigung beim Beenden

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

Wo ist dieser Code das ausgeführt wird? –

+0

Ich nehme an, dass Sie Form Close-Ereignis behandeln. Ich glaube nicht, dass Sie Application.Exit() benötigen –

+0

Ja, Formularabschluss, aber ich brauche application.exit(), da ein anderes Fenster geöffnet ist, das ich gleichzeitig schließen muss. – Sean

Antwort

4

Ah, hast du die CloseReason für das FormClosing Ereignis überprüfen? Ich denke, du könntest das gleiche Ereignis aus zwei verschiedenen Gründen bekommen (obwohl ich nicht genau erwarte, dass das normal passiert); Überprüfen Sie Ihre FormClosingEventArgs, um zu sehen, was die Parameter sind.

3

Ah, ich habe herausgefunden, wie ich das beheben kann. Ich habe die Application.Exit() entfernt; Ereignis aus dem FormClosing-Ereignis und verschoben es in das FormClosed-Ereignis. Es funktioniert alles jetzt.

7

Mit dieser

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