关于winform程序的UI架构问题?

Pw52867 2008-07-14 11:39:25
想开发如下图UI布局(上、左右)架构的winform系统:


详情解释:想用c#开发winform应用程序,架构为上、左、右 UI分布,主mainform是MDI型窗体;
其中splitContainer1为上下型,splitContainer1.panel1存放各模块的功能链接按钮;
splitContainer1.panel2包含了一个左右型的splitContainer2,在splitContainer2.panel1存
放treeView控件,点击左边的treeView的node结点,splitContain2.panel2是显示相关窗体;
附:splitcontainer1,splitcontainer2都在主mainform中!

请问:1、我这种采用splitContainer架构UI的思路是否合理?
2、点击splitContainer1.panel1中的模块按钮,在左边splitContain2.panel1的treeView中能否显示为不同内容? (像bs结构中frameset框架效果)
3、点击splitContainer2.panel1中的treeView相关结点,在右边(splitConter2.panel2)是否能实现显示不同的newform ? (像bs结构中frameset框架效果)
...全文
194 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
请各位提供宝贵的意见!
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
人气太低了...
xhan2000 2008-07-14
  • 打赏
  • 举报
回复
winform控制更灵活,类似frameset完全没问题

frameset可以用动态加载usercontrol实现
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
sorry,publish again!
Sub_Scriber 2008-07-14
  • 打赏
  • 举报
回复
Form1 myform = new Form1();
myform.TopLevel = false;
myform.FormBorderStyle = FormBorderStyle.None;
myform.Dock=DockStyle.Fill;
myform.Visible = true;
this.splitContainer1.Panel2.Controls.Clear();
this.splitContainer1.Panel2.Controls.Add(myform);
pupo 2008-07-14
  • 打赏
  • 举报
回复
可以用Form的Dock属性或Anchor、Location属性控制
frm.Dock = DockStyle.Fill;
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yunfeng007 的回复:]
可以,例子代码:

C# code
Form1 myform = new Form1();
myform.TopLevel = false;
myform.FormBorderStyle = FormBorderStyle.None;
myform.Visible = true;
this.splitContainer1.Panel2.Controls.Clear();
this.splitContainer1.Panel2.Controls.Add(myform);
[/Quote]
thanks to yunfeng007:
您的思路很好,但是当splitContainer1.panel2发生resize时,myform的size并不会发生变化?
我则才试过了,即便修改如下,还是达不到效果?(myform大小随splitContainer1.panel2变化而变化)

Form1 myform = new Form1();
myform.TopLevel = false;
myform.FormBorderStyle = FormBorderStyle.None;
myform.Visible = true;
myform.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Panel2.Controls.Clear();
this.splitContainer1.Panel2.Controls.Add(myform);
还是不行?!!!
yunfeng007 2008-07-14
  • 打赏
  • 举报
回复
可以,例子代码:

Form1 myform = new Form1();
myform.TopLevel = false;
myform.FormBorderStyle = FormBorderStyle.None;
myform.Visible = true;
this.splitContainer1.Panel2.Controls.Clear();
this.splitContainer1.Panel2.Controls.Add(myform);
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pupo 的回复:]
可以将窗体加入到panel的控件集合里面

Form2 frm = new Form2();
frm.TopLevel = false;
splitContainer1.panel2.Controls.Clear();
splitContainer1.panel2.Controls.Add(frm);
frm.Show();
[/Quote]
to pupo:
假如主窗体发生resize时,frm窗体的size不会跟着变化?!
pupo 2008-07-14
  • 打赏
  • 举报
回复
可以将窗体加入到panel的控件集合里面

Form2 frm = new Form2();
frm.TopLevel = false;
splitContainer1.panel2.Controls.Clear();
splitContainer1.panel2.Controls.Add(frm);
frm.Show();
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bbbbbb888888 的回复:]
完全可以啊,还能实现,停靠隐藏什么的.
[/Quote]
thanks to bbbbbb888888:
您指的"停靠隐藏",是指控件的.dock履性的应用吗?[即把form1() new 成control,再control.dock?]
Pw52867 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 li_ser 的回复:]
完全可以实现!
[/Quote]

thanks to li_ser:
您用这种模式开发过实际项目吗?给点意见!!!
yagebu1983 2008-07-14
  • 打赏
  • 举报
回复
可以实现的!!!
lsj_zrp 2008-07-14
  • 打赏
  • 举报
回复
可以实现的
动态加载
bbbbbb888888 2008-07-14
  • 打赏
  • 举报
回复
完全可以啊,还能实现,停靠隐藏什么的.
征服者X 2008-07-14
  • 打赏
  • 举报
回复
完全可以实现!

110,017

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧