在主窗体Panel中添加新的窗体(C#,winform开发) 设置
2010-11-16 09:08
274 查看
文的要写的是如何将窗体(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, panel1.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();
}
OK
这是我第一次写关于技术的文章.希望大家多多支持.
本人文笔不好,多多包含.
为什么要这样呢?
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, panel1.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();
}
OK
这是我第一次写关于技术的文章.希望大家多多支持.
本人文笔不好,多多包含.
相关文章推荐
- 在主窗体Panel中添加新的窗体(C#,winform开发) 设置
- 在主窗体Panel中添加新的窗体(C#,winform开发)
- 在主窗体Panel中添加新的窗体(C#,winform开发)
- 在主窗体Panel中添加新的窗体(C#,winform开发)
- 在Panel控件中添加新的窗体(C#,winform开发)
- 在主窗体Panel中添加新的窗体(C#,winform开发)
- 在主窗体Panel中添加新的窗体(C#,winform开发)
- 、首先,我们添加一个主界面窗体,命名为MainForm,该窗体IsMdiContainer设置为True,也就是设置为多文档窗体格式。拖拉布局控件"WeifenLuo.WinFormsUI.Docking.DockPanel"到主窗体MainForm中,并
- winform开发中,不同窗体根据显示需要进行不同设置,Form属性设置介绍如下。
- C# Winform 左侧菜单右边显示、子窗体显示在主窗体(子窗体当控件添加到Panel)
- 在主窗体Panel中添加新的窗体,实现类似于vs2010开发界面中得多窗体样式
- WinForm再Panel中添加子窗体问题总结
- C#(WinForm) ComboBox和ListBox添加项及设置默认选择项
- C#-WinForm-MDI窗体容器、权限设置
- [网上搜集]c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- C# WinForm控件开发如何设置属性的默认值
- iOS开发20:使用Settings Bundle为程序添加设置项
- 【WinForm窗体控件开发】之一 概述
- WinForm程序如何将子窗体嵌入到父窗体的Panel里
- 遍历WinForm窗体 根据语言类型设置其控件Text显示