2010-07-09 46 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事件。 根據用戶輸入,可以通過在參數中設置Cancel屬性來取消它。

+0

您應該使用更新的'Form.FormClosing'事件。 – SLaks 2010-07-09 14:02:21

+0

謝謝。更新了答案:-) – Mau 2010-07-09 14:26:51

2

使用Application.Exit或Form.Closing事件。退出不會讓你取消,所以關閉可能是更好的選擇

+0

Closure事件已被棄用,以支持FormClosing事件。 – Powerlord 2010-07-09 14:25:19

0

只需使用FormClosing事件形式