2013-10-30 2 views
4

사용자가 창을 닫으면 MessageBox가 나타나서 사용자가 창을 닫으려고하는지 묻습니다. 그러나 시도 할 때 창은 닫히고 nevers는 나에게 MessageBox를 보여줍니다.양식을 닫지 않고 확인 대화 상자를 표시하지 않으려면 어떻게합니까?

private void SchetsWin_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     e.Cancel = true; 
     MessageBox.Show("Example"); 
    } 
} 
+6

폼에 유선 해당 이벤트인가? 디자이너 또는 코드를 통해, SchetsWin.FormClosing + = SchetsWin_FormClosing; – DonBoitnott

+6

e.CloseReason을 디버깅 할 수 있습니까? 어쩌면 그것은 당신이 기대하는 것일뿐입니다. – Harry

답변

7

양식 자체에 이벤트를 연결하는 대신 OnFormClosing 메서드를 재정의하십시오. 지금까지 확인을 위해 확인 메시지를 표시하는 것과 같이, 단지 메시지 박스의 DialogResult를 값 확인 :

protected override void OnFormClosing(FormClosingEventArgs e) { 
    if (e.CloseReason == CloseReason.UserClosing) {   
    if (MessageBox.Show("Do you want to close?", 
         "Confirm", 
         MessageBoxButtons.YesNo, 
         MessageBoxIcon.Question) == DialogResult.No) { 
     e.Cancel = true; 
    } 
    } 
    base.OnFormClosing(e); 
} 

이 비록 같은 기능에주의를 - 그것은 최종 사용자를 귀찮게하는 경향이있다.

+0

고마워요, 이것은 매력처럼 작동했습니다! –

0

보호 재정의 무효 OnFormClosing (FormClosingEventArgs 전자)

 { 
     if (MessageBox.Show("Are you sure you want to Close?","Confirm",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No) 
      { 
       e.Cancel = true; 
      } 
     } 
관련 문제