如何在c#中关闭已打开的表单?

时间:2015-08-06 17:39:15

标签: c# forms

如果事件一再发生且先前打开的表格尚未关闭?然后问题存在,因为我们想要在打开新表单之前关闭先前打开的表单。为此我做了一个功能

    frmItem a = new frmItem();
    public bool CheckForm()
    {
        Form form;

        form = Application.OpenForms[a.Text];
        if (form == null)
            return true;
        else
            return false;
    }

并在btn_Click上我写了这段代码

private void buttonItem4_Click(object sender, EventArgs e)
    {
        frmAssets formSecond = new frmAssets();
        if (CheckForm())
        {
            formSecond.MdiParent = this;
            formSecond.Show();
        }
        else
        {
            MessageBox.Show("Form Already Open Exists!");
        }
    }

这显示了消息“表单已经打开存在!”如果我已经打开表格,工作正常!但那么在打开新表格之前我应该​​如何关闭已打开的表格......?我试过了     a。关闭(); 通过替换     MessageBox.Show(“表格已经打开!”); 但没有缘故。

1 个答案:

答案 0 :(得分:6)

通过Application.OpenForms检查是否打开,并且操纵MdiParent非常危险,尤其是MdiParent操作低级WinAPI。

我建议将要检查和关闭的表单实例传递给父表单,然后可以检查实例是否已打开,然后将其关闭。

正如评论中指出的那样,请进行一次ShowDialog()调用,而不是这个MdiParent和Show调用。