陈宝刚---享受生活,追逐梦想!
理想是心中的火焰,有追求的人才是幸福的人!

示例效果:
FrameForm分为上左右三区
上区显示TopUC的顶部Logo及欢迎语
左区显示LeftMenuUC的左侧功能按钮菜单
右区显示点击左侧功能按钮后对应的用户控件窗体内容
(事实上功能按钮应该由传统的WinForm菜单来代替 WinForm程序就应该有自己的传统的样式 而不是和Web类似

不过为了类似于web系统的框架页面
所以尝试了本示例)

示例涉及的窗体及用户控件:
FrameForm  框架窗体 包含两个SplitContainer
           SplitContainer1对窗体上下分隔
           SplitContainer2对SplitContainer1的Panel2进行左右分隔
TopUC      顶部用户控件
LeftMenuUC 左侧菜单用户控件 其中包含两个功能按钮button1 button2
ContentUC1 内容用户控件1 为button1所调用 将显示的框架的右区
ContentUC2 内容用户控件2 为button1所调用 将显示的框架的右区

FrameForm相关代码:

FrameForm相关代码

 

LeftMenuUC 相关代码:

LeftMenuUC 相关代码

posted on 2008-10-10 13:04 freeliver54 阅读(377) 评论(6)  编辑 收藏 网摘 所属分类: VS技術實踐WinForm 开发

评论

#1楼 [楼主] 2008-10-10 13:20 freeliver54      

SplitContainer :
Orientation(Horizontal/Vertical)
Dock(Fill)
BorderStyle(FixedSingle)
IsSplitterFixed(True)确定拆分器是否移动   回复  引用  查看    

#2楼 [楼主] 2008-11-06 09:02 freeliver54      

问:
用了SPLITCONTAINER控件将WINFORM分为左右2部分,
希望分隔线到窗体最左边的位置固定

答:
设置this.splitContainer1.IsSplitterFixed = true;

private void Form1_SizeChanged(object sender, EventArgs e)
{
this.splitContainer1.SplitterDistance = 150;
}   回复  引用  查看    

#3楼 [楼主] 2008-11-06 15:11 freeliver54      

this.splitContainer1.FixedPanel = FixedPanel.Panel1;   回复  引用  查看    

#4楼 [楼主] 2008-11-06 15:21 freeliver54      

//拆分器的宽度 以像素为单位
this.splitContainer1.SplitterWidth = 1;   回复  引用  查看    

#5楼  2008-11-23 23:01 追梦人RUBY      

请问楼主:
我想用SPLITCONTAINER在winform中实现类似网页的功能,中间分隔线,加个图片实现单击效果,然后左侧停靠,右侧最大化.如何实现,谢谢赐教!   回复  引用  查看  删除  修改

#6楼 [楼主] 2008-11-24 09:48 freeliver54      

@追梦人RUBY
//中间分隔线 好像不能加单击事件
//所以可以将分隔线不显示
//变相的通过另一个panel来实现
//将panel1做为分隔线放在this.splitContainer1.Panel2中 设置其宽及Dock为Left
//编写相应事件
//相应示例代码如下
//希望能对你有些参考
bool isLeftShow = true;
private void panel1_Click(object sender, EventArgs e)
{
if (isLeftShow)
{
this.splitContainer1.BorderStyle = BorderStyle.None;
this.splitContainer1.SplitterWidth = 1;
this.splitContainer1.Panel1MinSize = 0;
this.splitContainer1.SplitterDistance = 0;

isLeftShow = false;
}
else
{
this.splitContainer1.BorderStyle = BorderStyle.None;
this.splitContainer1.SplitterWidth = 1;
this.splitContainer1.SplitterDistance = 167;
isLeftShow = true;
}
}   回复  引用  查看    

posted on 2008-11-26 20:00  追梦人RUBY  阅读(1629)  评论(0)    收藏  举报