关闭winform应用程序并隐藏主窗体

Mat*_*ijs 4 c# visual-studio winforms

我试图通过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;
    }        
}
Run Code Online (Sandbox Code Playgroud)

当用户单击是时,我想让整个应用程序退出.但是,我有一个主窗体,它起到登录窗体的作用.当用户登录时,主窗体将被隐藏,并显示不同的窗体.

因此,当用户单击"是"时,整个应用程序不会因为隐藏的表单而结束.如何确保整个应用程序关闭?

我尝试过Application.Exit(),这会触发消息框再次确认关闭,因为它调用了OnFormClosing事件.

Ree*_*sey 5

你可以明确地处理Application.Exit它自己的原因:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    base.OnFormClosing(e);

    if (e.CloseReason == CloseReason.WindowsShutDown
       || e.CloseReason == CloseReason.ApplicationExitCall) 
       return;
Run Code Online (Sandbox Code Playgroud)

这将允许您使用Application.Exit()在处理程序中正确关闭.或者,您可以直接关闭主(隐藏)表单.