Form_Closed 이벤트 발생 시 메세지박스 예 아니오 중 아니오를 누르면 숨겨지는 현상이 있습니다.

조회수 767회
if (MessageBox.Show("종료하시겠습니까?", "안내", MessageBoxButtons.YesNo) == DialogResult.Yes)
 {
    Application.Exit();
 }

위 처럼 코드를 작성을 했습니다. 당연히 No가 호출 되면 프로그램이 숨기기라던가(Hide함수호출) 아니면 종료가 되는 등의 이벤트가 안 나타날 줄 알았는데 Hide()함수가 있는 것 처럼 숨겨지더라고요.(프로세스에는 남아있음) 이를 방지 하는 방법이 있나요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 방지라는 것이...무슨 의미인지...사용자가 윈도우 상단의 x를 클릭한다던거 혹은 프로그램의 종료 버튼을 클릭했을때 이벤트 처리입니다.DialogResult 결과가 No 면 종료 로직을 건너뛰면 됩니다.

    아래와 같이 FormClosing 처리를 하면 됩니다.

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
                var result = MessageBox.Show("프로그램을 종료하시겠습니까?", "종료 확인", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (DialogResult.No == result) e.Cancel = true; 
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)