窗体关闭时弹出MessageBox

9

在关闭应用程序之前,我使用此代码来提问,但它不能正常工作。
我的代码如下。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   DialogResult dlgresult = MessageBox.Show("Exit or no?",
                               "My First Application",
                               MessageBoxButtons.YesNo,
                               MessageBoxIcon.Information);
   if (dlgresult == DialogResult.No)
   {
      e.Cancel = true;

   }
   else
   {
     Application.Exit();
   }
}

如果回答为“否”,则它会再次请求问题并同样关闭。 - Federal09
1个回答

20

由于你在 FormClosing 事件中,不需要显式调用 Application.Exit(),这意味着关闭请求已经被触发(例如单击窗体按钮上的交叉图标,this.Close())。您只需要拦截关闭请求并指示 e.Cancel = true; 即可。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if(MessageBox.Show("Exit or no?",
                       "My First Application",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Information) == DialogResult.No) {
        e.Cancel = true;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接