在主窗体Panel中添加新的窗体(C#,winform开发)
来源:http://hi.baidu.com/weizier/blog/item/da9c58b5947e3dcc37d3ca5a.html/cmtid/9893940acc8bcd1294ca6b1f
本文的要写的是如何将窗体(Form)添加到panel中。 为什么要这样呢?
我想你一定看过这样的配制信息窗体吧(迅雷的配置页面)。 在你的项目开发中,是否也希望做出这种效果呢?
应该如何设置呢?
单击窗体的左边的按钮,窗体右边的内容会根据单击的按钮变化.
开始是想到的设置思路很简单,主窗体(如上图),右边放置一个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
这是我第一次写关于技术的文章.希望大家多多支持.
本人文笔不好,多多包含.
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架