我做的方法:
放置三个控件的顺序     
  Panel1(Dock   Left)   
  Splitter1   (Dock   Left)   
  Panel2   (Dock   Fill)   

解决方案 »

  1.   

    Splitter的Click事件中写:
    this.Panel1.Visible=!this.Panel1.Visible;不过这样会在窗口中Splitter原来的地方有一条灰色的线。
    尝试过该变Panel的Width属性,貌似没有作用。
    LZ可以试试
      

  2.   

    解决:
    首先写一个类,实现向一个SPLITTER控件里面放一个Lable控件,点击Lable后实现显示隐藏功能
    using System;
    using System.Windows.Forms;namespace WindowsApplication1
    {
    /// <summary>
    /// showSplitter 的摘要说明。
    /// 可显示/隐藏左边控件的SPLITTER
    /// </summary>
    public class showSplitter
    {
    public static void AddShowHideControl(System.Windows.Forms.Splitter mysplitter){
    //在控件mysplitter 上面加一个Lable控件
    System.Windows.Forms.Label lb=new System.Windows.Forms.Label();
    lb.Name="lbzzm";
    lb.Text="<<";
    lb.AutoSize=true;
    lb.Location=new System.Drawing.Point(lb.Location.X,(int)Math.Ceiling(mysplitter.Height/2));
    lb.Cursor=Cursors.Hand;
    lb.ForeColor=System.Drawing.Color.Red;
    mysplitter.Width=20;
    mysplitter.Controls.Add(lb); //事件的引发
    lb.Click+=new EventHandler(lb_Click); //设置一个鼠标悬停在控件时的说明文字
    ToolTip tt=new ToolTip();
    tt.SetToolTip(lb,"显示/隐藏左边的的控件");
    } private static void lb_Click(object sender, System.EventArgs e)
    {
    //得到引发事件的对象Label
    Label lb=(Label)sender;
    //定义一个目标替代控件体
    Control targetctrl=null;
    //得到Splitter的控件
    Splitter sl=(Splitter)lb.Parent;
    //得到窗体(含各个子控件的窗体)控件
    Control pctrl=sl.Parent; //遍历窗体内的所有控件
    foreach(Control temp in pctrl.Controls)
    {
    if(!temp.Equals(sl)){
    if(temp.Dock==DockStyle.Left & (!temp.Visible |temp.Left<sl.Left))
    {
    targetctrl=temp;
    break;
    }
    }
    } if(targetctrl!=null)
    {
    if(lb.Text=="<<")
    {
    //隐藏左边控件
    targetctrl.Visible=false;
    lb.Text=">>";
    }
    else
    {
    //显示左边控件
    targetctrl.Visible=true;
    lb.Text="<<";
    }
    }
    }
    }
    }使用时,在窗体的初始化代码中加入如下所示的代码即可:
                               //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    showSplitter.AddShowHideControl(this.splitter1); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //