MDIForm中,主窗体在显示字窗体时,怎么显示单个实例,这是本文讨论的重点。
1,首先,主窗体要能够显示MDIForm
private void EnableContainer()
{
this.IsMdiContainer=true;
}
{
this.IsMdiContainer=true;
}
2,然后就是菜单栏加载子窗体

#region 菜单栏事件
void Form1ToolStripMenuItemClick(object sender, EventArgs e)
{
OpenWindow(typeof(Child1Form).ToString());
}
void Form2ToolStripMenuItemClick(object sender, EventArgs e)
{
OpenWindow(typeof(Child2Form).ToString());
}
#endregion
void Form1ToolStripMenuItemClick(object sender, EventArgs e)
{
OpenWindow(typeof(Child1Form).ToString());
}
void Form2ToolStripMenuItemClick(object sender, EventArgs e)
{
OpenWindow(typeof(Child2Form).ToString());
}
#endregion
3,打开子窗体时,用子窗体类型来判断,然后选择显示或者隐藏

4,判断是否包含子窗体,通过遍历父窗体的controls,判断是否存在子窗体

private bool IsContailMDIChild(string childTypeString)
{
Form childForm=null;
foreach(var item in this.MdiChildren)
{
if(item.GetType().ToString()==childTypeString)
{
//Find child in items
childForm=item;
}
}
//Show the Exists item
if(childForm!=null)
{
childForm.TopMost=true;
childForm.Show();
childForm.Focus();
return true;
}
else
return false;
}
{
Form childForm=null;
foreach(var item in this.MdiChildren)
{
if(item.GetType().ToString()==childTypeString)
{
//Find child in items
childForm=item;
}
}
//Show the Exists item
if(childForm!=null)
{
childForm.TopMost=true;
childForm.Show();
childForm.Focus();
return true;
}
else
return false;
}