2010-07-09 1 views
1

Visual C#에서는 사용자가 프로그램을 닫기 위해 X 버튼을 클릭하면 어떻게 감지 할 수 있습니까? 끝내기 전에 특정 작업을 수행할지 묻는 메시지를 사용자에게 보내고 싶습니다. 나는 내 프로그램 자체가 종료 버튼이 있고, 나는 다음과 같이 내가 코딩 할 수 있습니다 알고Visual C# : 프로그램 검사 끝내기

private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     DialogResult result; 
     if (logfiletextbox.Text != "") 
     { 
      result = MessageBox.Show("Would you like to save the current logfile?", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); 
      if (result == DialogResult.Yes) 
      { 
       savelog.PerformClick(); 
      } 
     } 
     Environment.Exit(0); //exit program 
    } 

을하지만 난 이미 프로그램에 내장 된 X 버튼이 작업을 수행 할 수있는 방법?

답변

4
private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (MessageBox.Show("cancel?", "a good question", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      e.Cancel = true; 
     } 
    } 

"FormClosing"- 양식의 이벤트입니다. 즐겁게, 친구.

4

FormClosing에 대한 이벤트 처리기를 양식에 추가하십시오.

폼 디자이너는 이벤트를 선택하면 자동으로이 작업을 수행하지만, 수동으로 할 :

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); 

를 다음 코드로 처리기를 추가 :

private void Main_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //Code here 
} 

당신이 만약 양식을 닫으 려하지 않으려면 다음을 설정할 수 있습니다. e.Cancel = true;

0

양식을 사용하는 경우 Form.FormClosing 이벤트를 수신 할 수 있습니다. 사용자 입력을 기반으로 args에 Cancel 속성을 설정하여 취소 할 수 있습니다.

+0

대신 최신 'Form.FormClosing' 이벤트를 사용해야합니다. – SLaks

+0

감사합니다. 대답 업데이트 :-) – Mau

2

Application.Exit 또는 Form.Closing 이벤트를 사용합니다. 출구는 취소를 허용하지 않으므로 마감은 아마도 더 나은 선택입니다.

+0

Closing 이벤트는 FormClosing 이벤트를 위해 사용되지 않습니다. – Powerlord

0

그냥 양식의 FormClosing 이벤트를 사용하십시오.