1.具体需求如下为:随意画两个子窗体Form2和Form3,点击打开Form2判断panel中现有窗体,如果panel中不存在任何子窗体,则更新Form2到panel1;如果panel中存在子窗体,分为两种情况:1)子窗体是Form2窗体,则直接返回;2)子窗体是其他窗体,则清理其他窗体。按钮打开Form3类似,具体设计页面如下:
2.打开From2按钮代码:
Control.ControlCollection Children = this.panel1.Controls; //读取panel1下所有窗体
foreach (Control item in Children)
{
if (item.Name == "Form2") //如果Form2打开则直接返回
{
return;
}
else//如果存在其他窗体则删除
{
item.Dispose();
}
}
string path = "XMLconvert";//项目的命名空间
string name = "XMLconvert.Form2"; //项目类的名字
Form doc = (Form)Assembly.Load(path).CreateInstance(name); //获取窗体
doc.WindowState = FormWindowState.Maximized;
doc.TopLevel = false;
doc.FormBorderStyle = FormBorderStyle.None;
doc.Dock = DockStyle.Fill;
doc.Parent = this.panel1;
this.panel1.Controls.Add(doc);
doc.Show();
3.打开From3按钮代码(代码同上):
Control.ControlCollection Children = this.panel1.Controls;
foreach (Control item in Children)
{
if (item.Name == "Form3")
{
return;
}
else
{
item.Dispose();
}
}
string path = "XMLconvert";//项目的Assembly选项名称
string name = "XMLconvert.Form3"; //类的名字
Form doc = (Form)Assembly.Load(path).CreateInstance(name);
doc.WindowState = FormWindowState.Maximized;
doc.TopLevel = false;
doc.FormBorderStyle = FormBorderStyle.None;
doc.Dock = DockStyle.Fill;
doc.Parent = this.panel1;
this.panel1.Controls.Add(doc);
doc.Show();