C#在主窗体Panel中添加新的窗体

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在主窗体Panel中添加新的窗体(C#,winform开发)

本文的要写的是如何将窗体(Form)添加到panel中。

为什么要这样呢?

1)如果用tab控件,整个窗体的控件太多,不易于我们编程;

2)可以更灵活的控制窗体的布局。

我想你一定看过这样的配制信息窗体吧(迅雷的配置页面)。

在你的项目开发中,是否也希望做出做出这种效果呢?应该如何设置呢?单击窗体的左边的按钮,窗体右边的内容会根据单击的按钮变化.

开始是想到的设置思路很简单,主窗体(如上图),右边放置一个Panel控件.然后根据单击的按钮将子窗体显示在Panel控件上.在按钮的单击事件中加入下面的代码:private void

button1_Click(object sender, EventArgs e)

{ChildForm child = new ChildForm();

this.panel1.Controls.Add(child);

child.Show();

}运行程序显示“不能将顶级控件添加到一个控件上”出现“不能将顶级控件添加到一个控件上”错误怎么处理?在代码中加入

child.TopLevel = false;OK.新问题又出现了.我们不希望子窗体的标题和边筐也显示在父窗体中,再添加如下代码.

child.FormBorderStyle = FormBorderStyle.None;现在的感觉是不是舒服多了.但是还隐藏着一个新问题.怎样动态设置子窗体的Size、Location等呢?我希望在调整父窗体大小时,Panel1中子窗体的大小也跟随动态自动调整 .需要加入下面的事件

private void panel1_Resize(object sender,System.EventArgs e) {

try

{

this.child.ClientSize=new System.Drawing.Size(panel1.Size.Width,pa nel1.Size.Height);

}

catch(System.Exception Er)

{

MessageBox.Show(Er.ToString());

}

}编译无错,执行时(Error:未将对象引用设置到对象的实例)

但连续点了4个一样的错误提示确认后,程序却可以正常执行,并且form1调整窗体大小form2也可以随之响应了。

此计不行,又生一计.我们可以把子窗体当成一个控件,设置Dock属性不就行了吗?赶快测试一下:private void button1_Click(object sender, EventArgs e)

{ChildForm child = new ChildForm();

child.TopLevel = false;

child.Dock = System.Windows.Forms.DockStyle.Fill;

child.FormBorderStyle = FormBorderStyle.None;

//child.Parent = this.panel1;

this.panel1.Controls.Add(child);

child.Show();

}

相关文档
最新文档