C# 如何从MdiChild父窗体调用MdiChild
我使用以下方法从MainForm创建新的MdiChild:C# 如何从MdiChild父窗体调用MdiChild,c#,mdichild,mdiparent,C#,Mdichild,Mdiparent,我使用以下方法从MainForm创建新的MdiChild: AdminLogInForm adminForm; private void LogInAsAdminMenuItem_Click(object sender, EventArgs e) { if (adminForm == null) { adminForm = new AdminLogInForm(); adminForm.MdiParent
AdminLogInForm adminForm;
private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
{
if (adminForm == null)
{
adminForm = new AdminLogInForm();
adminForm.MdiParent = this;
adminForm.Show();
adminForm.Dock = DockStyle.Fill;
adminForm.BringToFront();
LogInAsAdminMenuItem.Enabled = false;
}
else
{
adminForm.Activate();
adminForm.BringToFront();
}
}
为什么当我关闭我的孩子时,在chld表单中使用“this.close()”使用该方法,我无法再打开它
这里我称之为close()
顺便说一句,在我用塑料做这个之前,我问过你要做什么;在所有语句之后。通过将您未创建的表单
adminForm
实例关闭为null(这是您下次尝试打开它时if条件将检查的内容。)
在表单的diposal上,使adminForm
=null
,然后您的if条件下次将起作用
private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
{
if (adminForm == null)
{
adminForm = new AdminLogInForm(this);
adminForm.Disposed += new EventHandler(adminForm_Disposed); //Add Disposed EventHandler
adminForm.MdiParent = this;
adminForm.Show();
adminForm.Dock = DockStyle.Fill;
adminForm.BringToFront();
LogInAsAdminMenuItem.Enabled = false;
}
else
{
adminForm.Activate();
adminForm.BringToFront();
}
}
void adminForm_Disposed(object sender, EventArgs e)
{
adminForm = null;
}
正如Marshal所描述的,表单的关闭使其被释放,您应该像这样添加一个释放条件
AdminLogInForm adminForm;
private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
{
if (adminForm == null || adminForm.IsDisposed)
{
adminForm = new AdminLogInForm();
adminForm.MdiParent = this;
adminForm.Show();
adminForm.Dock = DockStyle.Fill;
adminForm.BringToFront();
LogInAsAdminMenuItem.Enabled = false;
}
else
{
adminForm.Activate();
adminForm.BringToFront();
}
}
也可以创建一个函数,将窗体用作mdi
当我回答你的问题时,你改变了问题。现在请显示您在哪里调用Close()函数,以及您打算在哪里打开它。thnx,我编辑过,plased函数调用Close(),它在子窗体上
AdminLogInForm adminForm;
private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
{
if (adminForm == null || adminForm.IsDisposed)
{
adminForm = new AdminLogInForm();
adminForm.MdiParent = this;
adminForm.Show();
adminForm.Dock = DockStyle.Fill;
adminForm.BringToFront();
LogInAsAdminMenuItem.Enabled = false;
}
else
{
adminForm.Activate();
adminForm.BringToFront();
}
}