如何关闭主窗体和子窗体(而子窗口必须在主窗体关闭时关闭)
本文关键字:窗体 何关闭 窗口 | 更新日期: 2023-09-27 18:15:48
我有一个主窗口和几个子窗口。子窗口包含一些数据,所以我不想关闭它们。所以我在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();
,因为我需要确保所有线程正确关闭。所以最好是干净利落的。
您可以使用application . exit()强制应用程序。
我自己找到解决办法了:
// ...
if (sender == this) // main
{
exitApp = true;
FormClosing -= onFormClosing;
Close();
}
// ...