C# 退出消息框弹出两次。我想生成一次事件。
C# The exit message box pops up twice. I want to generate an event once.
bool ClosedFormMenu = false;
private void Cancel_btn_Click(object sender, EventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(dialog == DialogResult.Yes)
{
ClosedFormMenu = true;
Application.Exit();
}
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(!ClosedFormMenu)
{
if (dialog == DialogResult.Yes)
{
Application.Exit();
}
else if (dialog == DialogResult.No)
{
e.Cancel = true;
return;
}
}
}
按 X 或取消按钮显示退出消息。在消息上按 'Yes',它将再次出现。我想消除这种现象。
我想实现该程序,以便在我单击取消按钮或 X 按钮时它会完全退出。
提前致谢。
谢谢。
从按钮处理程序调用 Application.Exit() 也会调用 Form_closing()。在按钮处理程序和 Form_closing() 中都有对话框会使问题出现两次。试试这个:
private void Cancel_btn_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
只要你调用Application.Exit(),事件方法Form_closing()就会被调用。
这就是您的 MessageBox 出现两次的原因。
你在Cancel方法中调用它,退出应用程序,应用程序调用Form_Closing(),MessageBox再次出现。
你应该只打电话给
Application.Exit();
在您的 Cancel_btn_Click 方法中。
您可以将代码简化为以下内容:
private void Cancel_btn_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.No)
e.Cancel = true;
// TODO: Add 'else' if you want to call a cleanup
// method or do something before the application closes.
}
为什么 Form_closing() 中缺少 'return'?
'return' 缺失,因为这是 return 类型 'void' 的方法。
它不需要 'return' 任何东西,因为我们不需要过早退出该方法,所以我们不需要它。
为什么 Form_closing() 中缺少 'Application.Exit()'?
应用程序已收到退出命令。这就是它关闭表格的原因。因此,我们这里不需要它。
bool ClosedFormMenu = false;
private void Cancel_btn_Click(object sender, EventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(dialog == DialogResult.Yes)
{
ClosedFormMenu = true;
Application.Exit();
}
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(!ClosedFormMenu)
{
if (dialog == DialogResult.Yes)
{
Application.Exit();
}
else if (dialog == DialogResult.No)
{
e.Cancel = true;
return;
}
}
}
按 X 或取消按钮显示退出消息。在消息上按 'Yes',它将再次出现。我想消除这种现象。 我想实现该程序,以便在我单击取消按钮或 X 按钮时它会完全退出。 提前致谢。 谢谢。
从按钮处理程序调用 Application.Exit() 也会调用 Form_closing()。在按钮处理程序和 Form_closing() 中都有对话框会使问题出现两次。试试这个:
private void Cancel_btn_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
只要你调用Application.Exit(),事件方法Form_closing()就会被调用。 这就是您的 MessageBox 出现两次的原因。
你在Cancel方法中调用它,退出应用程序,应用程序调用Form_Closing(),MessageBox再次出现。
你应该只打电话给
Application.Exit();
在您的 Cancel_btn_Click 方法中。
您可以将代码简化为以下内容:
private void Cancel_btn_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form_closing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "program close", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.No)
e.Cancel = true;
// TODO: Add 'else' if you want to call a cleanup
// method or do something before the application closes.
}
为什么 Form_closing() 中缺少 'return'?
'return' 缺失,因为这是 return 类型 'void' 的方法。 它不需要 'return' 任何东西,因为我们不需要过早退出该方法,所以我们不需要它。
为什么 Form_closing() 中缺少 'Application.Exit()'?
应用程序已收到退出命令。这就是它关闭表格的原因。因此,我们这里不需要它。