我正在尝试通过 Form.Closing 事件关闭我的 winforms 应用程序,并带有一条自定义消息(是否要退出是/否)。为此,我为我的 c# 项目中的每个表单编辑了 onFormClosing 事件。像这样:
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown) return;
// Confirm user wants to close
switch (MessageBox.Show(this, "Are you sure you want to close?", "Closing", MessageBoxButtons.YesNo))
{
case DialogResult.No:
e.Cancel = true;
break;
default:
break;
}
}
当用户单击是时,我想让整个应用程序退出。但是,我有一个用作登录表单的主表单。当用户登录时,主窗体被隐藏并显示一个不同的窗体。
所以当用户点击 Yes 时,整个应用程序并没有结束,因为那个隐藏的表单。我怎样才能确保整个应用程序被关闭?
我已经尝试过 Application.Exit(),这会触发再次确认关闭的消息框,因为它会调用 OnFormClosing 事件。
最佳答案
您可以显式处理 Application.Exit
作为它自己的原因:
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown
|| e.CloseReason == CloseReason.ApplicationExitCall)
return;
这会让您使用 Application.Exit()
在处理程序中正确关闭。或者,您可以直接关闭主(隐藏)表单。
关于c# - 关闭主窗体隐藏的 winforms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749503/