有些时候我们需要将子窗体嵌入父窗体来实现一些效果这时该怎么做呢。
//通过给panel加载子元素实现
Form1 form =new Form1();
form.FormBorderStyle = FormBorderStyle.None; //隐藏子窗体边框(去除最小花,最大化,关闭等按钮)
form.TopLevel =false; //指示子窗体非顶级窗体
form.Dock = DockStyle.Fill;//将窗体最大化填充
this.MainContent_panel.Controls.Add(form);//将子窗体载入当前窗体的panel
form.Show();
有一点需要注意,如果在使用完窗体后想关闭窗体怎么办?我们需要清掉父窗体上的子窗体,但是清除后实际上子窗体没有被关闭。我们需要将窗体彻底关掉,这样下次再打开时才会重新加载窗体的load事件
//System.Windows.Forms.Application.OpenForms["子窗体的name"].Close();
//我们可以提前定义一个集合
public List<string> FormList = new List<string>();
//在父窗体加载子窗体时记录子窗体的名字 嵌入之前关闭子窗体
FormList.ForEach(a=>{ System.Windows.Forms.Application.OpenForms[a].Close(); });
FormList = new List<string>();
MainContent_panel.Controls.Clear();
//通过给panel加载子元素实现
Form1 form =new Form1();
form.FormBorderStyle = FormBorderStyle.None; //隐藏子窗体边框(去除最小花,最大化,关闭等按钮)
form.TopLevel =false; //指示子窗体非顶级窗体
form.Dock = DockStyle.Fill;//将窗体最大化填充
this.MainContent_panel.Controls.Add(form);//将子窗体载入当前窗体的panel
FormList.Add("Form1");
form.Show();