无法在C#中打开和关闭MDI表单内的表单

时间:2017-08-31 09:27:23

标签: c# winforms mdiparent

我目前正在使用MDI Parent Form,在其中我会点击Form中的一个项目打开ToolStripMenuItem。我有一个代码,允许我只打开一次该项目,而不是打开多个Forms

frmRegUser frm = null;

private void createToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (frm == null)
    {
        frm = new frmRegUser();
        frm.MdiParent = this;
    }
    frm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
    frm.Show();
}

到目前为止一直很好,但是在关闭Form内的MDI Parent Form并尝试再次打开createToolStripMenuItem后,它会显示错误

  

无法访问已处置的对象。对象名称:'frmRegUser'

然后我搜索了它并尝试使用frmRegUser closing event内部代码放置此代码:

this.Hide();
this.Parent = null;
e.Cancel = true;

如果我也愿意,它也不会再打开表格。

你有什么想法我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

通过从this.Parent = null;事件中删除frmRegUser_FormClosing来解决问题。

答案 1 :(得分:0)

试试这个,确保在初始化之前将其处理掉:

 if (frm == null || frm.IsDisposed)