如何在C#中实现隐藏部分窗体,就像PPLive右边频道列表,点下中间线上的小三角形,列表框缩进去了?希望给出比较详细的解答

解决方案 »

  1.   

    private void expandableSplitter1_SplitterMoving(object sender, SplitterEventArgs e)
            {
                if (e.SplitX != 136)
                    e.SplitX = 136;
            }        private void expandableSplitter1_ExpandedChanged(object sender, ExpandedChangeEventArgs e)
            {
                if (!expandableSplitter1.Expanded)
                {
                    this.panelMain.Left = 17;
                }
                else
                {
                    this.panelMain.Left = 150;
                }
            }
      

  2.   

    panelMain是右边的主界面
    expandableSplitter1是那个可以点击之后进行缩回边上的,同时可以隐藏左边的控件
      

  3.   

    SplitContainer控件如果要又能拉又能点的话......在放一个panel
      

  4.   

    万能方法就是找到控件,定义GraphicsPath,定义为窗体尺寸,然后扣掉要隐藏的部分,重建窗体的Region。这是对异型窗体。如果标准窗体,一般是设置窗体尺寸。或是扩展2个窗体显示,隐藏掉一个。
      

  5.   


    也可以自己动手做
    1.先拉一个panel1 设置Dock属性 为right
    2.在来一个spliter控件  Dock 为right,设置宽度为2px
    3.在拉一个panel2  Dock 设置为 Fill在在panel2中放一个panel3,设置Dock 为right,设置宽度为5px//在panel3中放一个label 控件,放在panel3的中间位置,并label设置背景图片在写代码: panel3的 resize 事件中写代码:    private void panel3_Resize(object sender, EventArgs e)
        {
         //label的位置适中在panel3的中间
          this.lb_x.Location = new Point((this.pan_x.Width / 2 - this.lb_x.Width / 2), 0);
        }
        private void label1_Click(object sender, EventArgs e)
        {
          panel2.Visible = !panel2.Visible;
        }
      

  6.   


       
       //width 改成 height
        private void panel3_Resize(object sender, EventArgs e)
        {
         //label的位置适中在panel3的中间
          this.lb_x.Location = new Point((this.panel3.Height/ 2 - this.label1.Height/ 2), 0);
        }
      

  7.   

    SplitContainer就可以了,不行可以用第三方控件