窗体框架 界面控件 窗体分割框架 左右分栏

窗体界面,窗体框架,属性页功能,窗体分割框架,左右分栏
================================
我希望做的程序就是左边是个tree,然后我点不同的节点,在右边的主区域显示不同的内容,请问右边怎么做好呢?是用几个panel吗?要用frame吗?我很糊涂,没有用过delphi,谢谢大家!
-------------
用PageControl了,设置多个页,并且每个页的TabVisible为false,使用的时候通过控制PageControl.ActivePage变换各个页面。
这样做无论设计时,还是运行时,都非常方便!
-------------
我也是这样做的:左边Treeview,右边PageControl,然后使用一个函数控制右边PageControl的显示,很方便。
--------------
我有时在左边放一个panel,左对齐,里面放一个树
整个窗体为mdi窗体
右边为子窗体,这样最大化最小化也很方便
-------------
主要看内容,象我们就是左边treeview,右边listview
下载了torble介绍的菜单控件
==================================
左右分栏:
最近做一个项目,是C/S结构的,用C#做。客户需要实现像网页那样左右分栏,即像本社区那样的分栏,点击左边的树形菜单,右边实现相应的窗体,把我郁闷了几天,还没解决,希望各位给我点意见。
-------------
有SplitContainer和treeview控件啊
-------------
这可以用PANEL来做,只不受PANEL的数量会随着左边树形结构的情况来决定
-------------
我今天试过了,左边用个树列表菜单,中间加个分隔条,右边就让它空白,不用放Panel,实例化一个子窗体的实例出来,指定MdiParent=this;然后Show()一下,设置子窗体开始时最大化就行了, 这样子窗体实例默认就在主窗体右边了.

'在左边放的一个TreeView,treeView.dock=dockstyle.left
Me.IsMdiContainer = True
Dim frm As New Form2
frm.MdiParent = Me
frm.Show()
frm.Dock = DockStyle.Fill
-------------
窗体管理两个左右分割的控件,窗体负责给这两个部分传递不同的数据参数让他们刷新,例如给导航控件传递“站点”参数让它显示不同内容的目录,给内容控件传递“内容”参数让它展示内容。如果根据内容不同会展示不同类型的控件,那么最外层的内容控件会把里层的内容控件动态创建并动态装入自己的Controls集合。
而选择菜单项到改变内容之间,是因为窗体捕获了菜单暴露出的事件然后调用内容控件的接口来改变内容的。
-------------
理解了.Net MDI的实现机制了,实际上Net的MDI和MFC或VB等的其他框架建立的MDI完全是两个概念,比如同一个.Net应用程序中允许出现两个相互独立的MDI父窗口(而且是在同一个ApplicationDomain中).而且MDI窗口中的控件与MDI子窗口是同一级别的,你只要把MDI上的东西步置好其步局、锚定、停靠的方式和规则就可以了,MDI子窗口会和MDI父窗口的子控件一样的规则显示在MDI父窗口上.
-------------
窗口和控件还是有很大逻辑区别的。窗口虽然是从ContainerControl继承来的,但是它承载了巨大的扩展功能,例如焦点的控制和转移、自身位置和移动(例如CenterToSceen)的多种辅助方法、菜单控制、外观控制的大量功能等等。使用控件就足够、没有必要使用窗口的时候,不要使用窗口。
-------------
MDI 窗口有其特殊需求,只有必须使用 MDI 窗口的地方采用。如果把任何窗口内部的控件都用 MDI 子窗口来代替,不但浪费了资源和增加了(隐藏窗口特征使之符合一般控件的操作习惯),实现扩展功能反而更困难。
-------------
可以从Panel派生N多新类,来解决子Form的问题,不过这样主窗口的控制机制(比如菜单控制,工具条控制)太难实现,甚至于你在左面板上添加一个命令按钮,你甚至需要为活动面版专门添加一个焦点控制器,才检索最后一个拥有焦点的面板,而且这个面板在析构或隐藏时必须告诉这个控制器他可能由于特殊操作造成的失焦现象的发生,因为主窗口可以根本不知道某一Panel存在还是不存在,是不是可见,等等,这些判断都需要在主窗口的代码中实现.对编程来说,用Panel要比Form复杂的多.正因为他们是与左面版完全平级的,所以焦点,不容易控制,如果左面板发现命令,可能,右面板在左面板发令时已失去焦点(比如发令的是一个复选框).实际上许多实例中,在一个含有过多Sheet的而且互相影响的TabControl就已经很不好控制了,如果引入N多没有专业管理的面板,流程就更难了.
-------------
左边一个treeview,dock属性=left
右边一个panel,dock属性=full

private void btnBill_Click(object sender, System.EventArgs e)//帐单
{
showFrmAddBill();
}

private void showFrmAddBill()
{
panel1.Controls.Clear();
frmAddBill fab=new frmAddBill();
fab.TopLevel=false;
fab.Parent=panel1;
fab.Dock=DockStyle.Fill;
fab.Show();
}

能看懂吗?
frmAddBill窗体的属性需要设置一下
FormBorderStyle=none
size=form1.panel1.size
(属性栏中设置即可)

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值