2011-01-07 7 views
6

사용자가 C#에서 내 프로그램을 종료할지 묻는 메시지가 표시되도록하려고합니다.하지만 어떤 이유로 든 "예"라고 말하면 종료하려고하면 확인 상자가 나타납니다 다시. 나는 이유를 알 수 없다.출구에서 두 번 확인

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

이 코드가되고있는 실행? –

+0

Form Close 이벤트를 처리 중이라고 가정합니다. 나는 당신이 Application.Exit()이 필요하다고 생각하지 않는다. –

+0

네, 폼 닫는 중이지만 동시에 닫아야 할 또 다른 창이 열려 있기 때문에 application.exit()이 필요하다. – Sean

답변

4

아, 당신은 FormClosing 이벤트에 대한 CloseReason을 확인 했습니까? 두 가지 이유로 동일한 이벤트를 얻을 수 있다고 생각합니다. (정상적으로 일어날 것이라고 정확히 예상하지는 않지만); FormClosingEventArgs에서 매개 변수가 무엇인지 확인하십시오.

3

아, 나는 그것을 고치는 법을 알아 냈습니다. Application.Exit()을 제거했습니다. 이벤트를 FormClosing 이벤트에서 가져 와서 FormClosed 이벤트로 옮겼습니다. 이제는 모두 작동합니다.

7

사용이

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