无法在C#中打开和关闭MDI表单内的窗体
问题描述:
我目前使用的是MDI Parent Form
,在其中我将打开Form
,方法是单击ToolStripMenuItem
中的其中一项。我有一个代码,允许我只打开一次该项目,而不是打开多个Forms
。无法在C#中打开和关闭MDI表单内的窗体
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;
它不会打开窗体再次,如果我也想要。
你有什么想法我该如何解决这个问题?
答
该问题已通过从frmRegUser_FormClosing
事件中删除this.Parent = null;
解决。
什么是“不也工作”是什么意思?当然,如果没有'close'事件处理程序,那么'frm'在关闭时会被放置。通过该处理程序,您可以通过_hiding_形式而不是_closing_来避免这种情况。也许你不应该把'Parent'设置为null或者在再次显示时重置它。 –
它通过删除'this.Parent = null;'line @RenéVogt – Rekcs
frm.FormClosed + = delegate {frm = null; }; –