C# - 如何与子窗体一起关闭主窗体(子窗口必须在主窗体关闭时关闭)

时间:2013-05-29 14:02:56

标签: c# forms children

我有一个主窗口和几个子窗口。子窗口包含一些数据,因此我不希望它们被关闭。所以我在FormClosing中隐藏它们,我设置了e.Cancel = true;

但是当我想要关闭主窗口时(退出应用程序)。我退出它有点麻烦。首先它不会关闭。但是有一个额外的变量要注意我正在关闭我需要2次点击才能实际关闭它(问题是在onFormClosing(mainWIndow, ...)执行之前,框架试图关闭将首先隐藏自己的子项。)

// main and child windows have this as form closing event proc
private void onFormClosing(object sender, FormClosingEventArgs e)
{
    if (sender == this) // main
    {
        exitApp = true;
    }
    else
        if (sender == formChild) // child
        {
            if (!exitApp)
            {
                e.Cancel = true;
                formChild.Hide();
            }
        }
}

如何通过一次点击关闭它们?

我还想避免使用Application.Exit();,因为我需要确保所有线程都正常关闭。所以最好是干净利落。

2 个答案:

答案 0 :(得分:1)

您可以使用Application.Exit()强制应用程序。

答案 1 :(得分:0)

自己找到解决方案:

// ...
if (sender == this) // main
{
    exitApp = true;
    FormClosing -= onFormClosing;
    Close();
}
// ...