0

看看这个问题的答案。我已经尝试了接受答案的第二条评论。问题在于“Application.OpenForms[0]”。它给了我一个错误,说“被指定为此表单的 MdiParent 的表单不是 MdiContainer。参数名称:值”。然后我展开查看有多少表格是打开的。我现在发现了一个惊人的结果。有两种开放形式。其中之一是 LoginForm 我有 this.Hide(); 成功登录。当我将其更改为 this.Close(); 应用程序关闭。为什么它仍然打开以及如何在不关闭应用程序的情况下关闭它?

4

1 回答 1

0

首先,如果在您关闭表单时应用程序正在完全关闭,则很可能是因为您正在关闭主表单,即:

Application.Run(new MainForm());

您的 LoginForm 是否正在关闭该主表单?

其次,如果表单要成为 MdiParent,它必须将 IsMdiContainer 属性设置为 true。

第三,我不会依赖 Application.OpenForms[0],而是遍历它们并按名称选择正确的,如下所示:

FormCollection fc = Application.OpenForms;

foreach (Form frm in fc)
{
if (frm.Name == "Main Form")
    do what you need to do...
}

希望这可以帮助。

于 2013-03-12T12:41:16.700 回答