我有一个主窗口和几个子窗口。子窗口包含一些数据,因此我不希望它们被关闭。所以我在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();
,因为我需要确保所有线程都正常关闭。所以最好是干净利落。
答案 0 :(得分:1)
您可以使用Application.Exit()强制应用程序。
答案 1 :(得分:0)
自己找到解决方案:
// ...
if (sender == this) // main
{
exitApp = true;
FormClosing -= onFormClosing;
Close();
}
// ...