2010-07-09 66 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事件形式