假设如果从菜单上单击MDI表单来调用表单,则需要在顶层创建该表单的实例声明,如下所示:
Form1 fm = null;
然后,我们需要定义菜单单击事件来调用Form1,如下所示:
private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (fm == null|| fm.Text=="")
{
fm = new Form1();
fm.MdiParent = this;
fm.Dock = DockStyle.Fill;
fm.Show();
}
else if (CheckOpened(fm.Text))
{
fm.WindowState = FormWindowState.Normal;
fm.Dock = DockStyle.Fill;
fm.Show();
fm.Focus();
}
}
用于检查Form1是否已打开的CheckOpened定义:
private bool CheckOpened(string name)
{
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (frm.Text == name)
{
return true;
}
}
return false;
}
希望这将解决创建表单的多个实例时遇到的问题,如果已经打开或最小化菜单单击菜单上的Form1,也可以将其重点关注。