我需要确保如果我以某种方式关闭主窗体,所有窗体都将关闭。所以我决定隐藏Close()函数,并写了这样的内容
public new bool Close()
{
List<Form> formsList = new List<Form>(Application.OpenForms.Count);
foreach (var form in Application.OpenForms)
formsList.Add((Form)form);
formsList.Reverse();
foreach (var form in formsList)
{
if (form.IsDisposed) continue;
Invoke(new GenericEventHandler(() => { form.Close(); }));
}
return Application.OpenForms.Count == 0;
}
因此,如果所有表单都成功关闭,我将返回true,并且由于这个原因,我知道用户可以从应用程序中注销。
但是,似乎form.Close()函数不会立即被触发。调用
form.Close()
之后,不会立即触发formclosed事件以及未修改集合Application.OpenForms。注意打开的表单数量已更改。可能是什么原因?
最佳答案
你为什么不使用
Application.Exit();
关于c# - Form.Close()不会立即关闭窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7103588/