在Winform项目中,经常用到的就是在容器中加载子窗体,以panel容器为例,在panel中加载子窗体
方法一:通过给panel加载子元素实现
Form2 form = new Form2();
form.FormBorderStyle = FormBorderStyle.None; //隐藏子窗体边框(去除最小花,最大化,关闭等按钮)
form.TopLevel = false; //指示子窗体非顶级窗体
this.panel1.Controls.Add(form);//将子窗体载入panel
form.Show();
方法二:指定父容器实现
Form2 form=new Form2();
form.MdiParent=this;//指定当前窗体为顶级Mdi窗体
form.Parent=this.Panel1;//指定子窗体的父容器为
Frm.FormBorderStyle = FormBorderStyle.None;//隐藏子窗体边框,当然也可以在子窗体的窗体加载事件中实现
form.Show();
在实际项目中应用如下:
private void btnFrm1_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
showForm(btn);
}
private void btnFrm2_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
showForm(btn);
}
private void btnFrm3_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
showForm(btn);
}
private void showForm(Button btn)
{
switch (btn.Name)
{
case "btnFrm1":
Form1 form1 = new Form1();
showChildForm(form1);
break;
case "btnFrm2":
Form2 form2 = new Form2();
showChildForm(form2);
break;
case "btnFrm3":
Form3 form3 = new Form3();
showChildForm(form3);
break;
}
}
private void showChildForm(Form form)
{
if (this.ActiveMdiChild == form) return;
this.panel1.Controls.Clear();
form.TopLevel = false;
form.Parent = this.panel1;
form.FormBorderStyle = FormBorderStyle.None; // 设置取消边框
form.Dock = DockStyle.Fill; // 设置填充容器
form.Size = this.panel1.Size; // 设置以父容器Size为子窗体的Size
form.Show();
}