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

本文关键字:表单 | 更新日期: 2023-09-27 18:06:39

如果事件一次又一次发生,而先前打开的窗体尚未关闭?那么问题就出现了,因为我们想要在打开新表单之前关闭之前打开的表单。为此,我创建了一个函数

    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.close ();通过替换对话框。Show("表单已经打开了!");

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

通过应用程序检查。操作MdiParent是非常危险的,尤其是MdiParent,因为它操作的是底层的WinAPI。

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

并且正如在注释中指出的那样,请调用ShowDialog()而不是MdiParent和Show调用。