我需要确保如果我以某种方式关闭主窗体,所有窗体都将关闭。所以我决定隐藏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/

10-13 06:03