您不想将所有表单(两次)保留为变量。所有 mdi 表单都添加到您的 MdiChildren 集合中。因此,您需要检查是否需要显示您创建的表单。像这样:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.MdiParent = this;
OpenMdiChild(f2);
}
private void OpenMdiChild(Form newForm)
{
bool found = false;
foreach (Form frm in this.MdiChildren)
{
if (frm.GetType() == newForm.GetType())
{
frm.Activate();
frm.Focus();
//frm.BringToFront();
found = true;
break;
}
}
if (!found)
{
frm.Show();
}
}
如果您希望用户只打开 1 个表单,您可以将 OpenMdi-- 方法更改为:
private void OpenMdiChild(Form newForm)
{
bool found = (this.MdiChildren.Length > 0);
if (!found)
{
foreach (Form frm in this.MdiChildren)
{
if (frm.GetType() == newForm.GetType())
{
frm.Activate();
frm.Focus();
//frm.BringToFront();
found = true;
break;
}
}
if (!found)
{
frm.Show();
}
}
}