winform实现类似菜单的伸缩功能

 做一个winform程序,界面上有许多不常用,但是又不能少的控件,放在界面上不美观,所以就想把它隐藏起来,需要的时候再显示出来。效果大致如图:

在网上看到一种做法:原文网址:http://www.cnblogs.com/xiaolifeidao/archive/2013/01/22/2870841.html

、在form上添加一个FlowLayoutPanel的容器,然后设置其属性,AutoSize=ture,AutoSizeMode=GrowAndShrink,Dock=Fill,FlowDirection=TopDown

二、在FlowLayoutPanel容器中放置各种控件,但是必须先用Panel布局,不然这些控件都会挤在一起;

三、添加button按钮,添加代码:

if (panel1.Visible == true)
{
panel1.Visible = false;
}
else
{

panel1.Visible = true;
}

然后就做成上图那种效果,这种方法更适用于下图效果:

 

像这种下拉菜单,这种方法很不错,但是对于我那种横向布局的来说就不太适合了,因为左边panel1隐藏的时候,右边的panel直接填充panel1的位置,而panel原来的位置就空出来了,如果想panel填充整个空间,就必须在点击隐藏按钮的时候加一句设置panel宽度的代码。但这样一来,一旦窗口放大或缩小,原来的布局就又乱了。而改成下拉的又不符合初衷。

  刚才无意间发现splitContainer控件有两个子属性Panel1Collapsed和Panel2Collapsed,这两个属性确定panel是折叠还是展开;所以添加如下代码试了下,成功解决问题。

private void button1_Click(object sender, EventArgs e)
{
if (splitContainer1.Panel1Collapsed == true)
{
splitContainer1.Panel1Collapsed = false;
}
else
{
splitContainer1.Panel1Collapsed = true;
}

}

posted on 2014-11-26 15:43  紫林御风  阅读(1585)  评论(0编辑  收藏  举报