2 ok panda gogo Ok_Panda_GoGo 于 2016.01.19 10:55 提问

窗体的Closing事件,里面如果使用Application.Exit(),会弹出两次对话框询问

代码如下,

  private void StartForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (DialogResult.OK == MessageBox.Show("确认退出?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information))

            {
                Application.Exit();
            }
            else
                e.Cancel = true;


        }

而我把Application.Exit()注释掉就正常弹出一次对话框了,新人不解!请大家帮帮忙!

2个回答

lrgdongnan
lrgdongnan   2016.01.19 12:42
已采纳

这个是很正常的,当执行Application.Exit();时,就激活窗体的关闭事件,从而调用该事件的处理程序StartForm_FormClosing,你这样写相当于递归调用
,修改如下:
private void StartForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (DialogResult.Cancel == MessageBox.Show("确认退出?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information))
{
e.Cancel = true;
}
}

Ok_Panda_GoGo
Ok_Panda_GoGo 谢谢!很详细。
接近 2 年之前 回复
enpterexpress
enpterexpress   2016.01.19 11:10

点击关闭出发关闭事件 一次
事件中,Application.Exit();会再次触发关闭事件 二次

Ok_Panda_GoGo
Ok_Panda_GoGo 回复?_?_?: 明白了,谢谢!
接近 2 年之前 回复
enpterexpress
enpterexpress 正常了
接近 2 年之前 回复
Ok_Panda_GoGo
Ok_Panda_GoGo 也就是说Application.Exit();多此一举了?如果去掉它会怎样
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!