我正在使用下面的代码退出我的整个应用程序应用程序,但是没有问题messagebox
我的问题是有时我收到了两次消息,有时我把它正确显示为一条消息显示..
任何人都可以帮助我为什么会发生这种情况?
private void AppClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void F0100_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result;
result = MessageBox.Show("Are you sure you want to exit?", "Exit Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
//Environment.Exit(1);
Application.Exit();
}
else
{ e.Cancel = true; }
}
答案 0 :(得分:1)
我假设相关表单是您的主要表单,即您将此Form
作为Application.Run(new Form1());
如果是这种情况,通常您不需要在Application.Exit()
的{{1}}分支下执行Yes
。所以你的代码应该是下面的代码
FormClosing
多余的private void F0100_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason != CloseReason.UserClosing)
return;
DialogResult result;
result = MessageBox.Show("Are you sure you want to exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result != DialogResult.Yes)
{
e.Cancel = true;
}
}
电话会产生额外的Application.Exit()
事件
注意:您还应该检查FormClosing
,这样当用户注销或终止该过程时,您就不会创建额外的弹出窗口。
答案 1 :(得分:0)
然后this answer可能对你有帮助。基本上,您需要使用您注释掉的那个:Environment.Exit(0)
。 Application
一个优雅的尝试退出尝试关闭表单。您的表单仍处于打开状态,因此会收到第二次FormClosing
电话。这完全取决于时间,但是我认为大多数时候你会看到提示两次。