c# panel里面嵌入窗体

现有一个父窗体name是Parent,子窗体name是Son,要让Son嵌入在Parent的Panel内,则父窗体的初始加载代码如下:
private void Parent_Load(object sender, System.EventArgs e){this.IsMdiContainer=true;//设置父窗体是容器
Son mySon=new Son();//实例化子窗体
mySon.MdiParent=this;//设置窗体的父子关系
mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel
mySon.Show();//显示子窗体,此句很重要,否则子窗体不会显示}

今天在做 项目 时候遇到一个问题,窗体分为左右两部分,要求在左边栏点击按钮时,右边动态加载窗体
最后想到用panel实现,经历几次失败,并查找资料后,终于搞定

说明:如果多次切换需加入 panel.clear();清空原有panel内容
环境:C# VS2008 

方法一:通过给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;//隐藏子窗体边框,当然也可以在子窗体的窗体加载事件中实现

panelform.Show();

实际上你把窗体加入了panel,那么这个窗体已经只是个控件了,和普通的textbox控件没什么两样,那么你能告诉我如何关闭panel中的textbox控件吗,好像没这么一说,因此,实际上关闭panel的中子窗体(form),就是从panel中移除子窗体form:代码如下:

Form2 form = new Form2();//要声明为成员变量哦
//添加进panel的按钮,你应该已经实现了
private void button1_Click_1(object sender, EventArgs e)
{
    form.TopLevel = false;//这就是使你窗体变控件的一步
    form.Dock = DockStyle.Fill;
    form.FormBorderStyle = FormBorderStyle.None;
    form.Parent = panel1;//你panel的id
    form.Show(); 
}
//关闭panel中子窗体的按钮
private void button2_Click(object sender, EventArgs e)
{
    panel1.Controls.Remove(form);//其实就是一个控件的移除
}


[csharp]  view plain copy
  1. private void 话术管理ToolStripMenuItem_Click(object sender, EventArgs e)  
  2. {  
  3.     FormScripts formscripts = new FormScripts();  
  4.     formscripts.TopLevel = false;  
  5.     formscripts.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;  
  6.     formscripts.Dock = DockStyle.Fill;  
  7.     formscripts.Parent = this.panel1;  
  8.     //formscr

[csharp]  view plain copy
  1. private void 话术管理ToolStripMenuItem_Click(object sender, EventArgs e)  
  2. {  
  3.     FormScripts formscripts = new FormScripts();  
  4.     formscripts.TopLevel = false;  
  5.     formscripts.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;  
  6.     formscripts.Dock = DockStyle.Fill;  
  7.     formscripts.Parent = this.panel1;  
  8.     //formscripts.MdiParent = this;//直接弹出一个新窗体  
  9.     formscripts.Show();  
  10.     formscripts.BringToFront();//如果需要在panel1里面显示不同的窗体,就要加这句,这样在切换panel1里面显示的窗体时,窗体才能显示出来  
  11. }  

现有一个父窗体name是Parent,子窗体name是Son,要让Son嵌入在Parent的Panel内,则父窗体的初始加载代码如下:
private void Parent_Load(object sender, System.EventArgs e)
  {
   this.IsMdiContainer=true;//设置父窗体是容器
   Son mySon=new Son();//实例化子窗体
   mySon.MdiParent=this;//设置窗体的父子关系
   mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel
   mySon.Show();//显示子窗体,此句很重要,否则子窗体不会显示
  }

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值