在button的click事件中写,改变当前窗体的size即可,也就是说右边本来就有,只不过没显示

解决方案 »

  1.   

    这样动态改变size大小是固定的,同时要保证左右两边内容能拖动啊,就像放置了一个splitcontainer在里面一样
      

  2.   

    点击button强制改变窗体大小!
      

  3.   

    如果只是单单改变窗体的大小是缺少了我上面所说的,同时左边右边的内容大小是可以拖动的。这样不符合要求!
    应该是用splitContainer实现的
      

  4.   

    楼主,你在Button.Click里写这样一句代码试试:
    this.Width = this.Width + 500;
      

  5.   

            private void Form1_Load(object sender, EventArgs e)
            {
                this.Width = 300;
                this.splitContainer1.SplitterDistance = 288;
            }        private void button1_Click(object sender, EventArgs e)
            {
                if (this.Width == 300)
                {
                    this.Width = 500;
                    this.splitContainer1.SplitterDistance = 288;
                }
                else
                {
                    this.Width = 300;
                    this.splitContainer1.SplitterDistance = 288;
                }
            }
      

  6.   

    隐藏右边内容时将控件放在一个Panal里面,显示右边内容时,将控件放在SplitContainer的左右两边,然后控制是显示Panal还是显示SplitContainer,再调整窗体大小就可以了吧
      

  7.   

    这样动态改变size大小是固定的,同时要保证左右两边内容能拖动啊,就像放置了一个splitcontainer在里面一样窗体的SIZE如果固定了,那也只是在运行时固定了,但是你在运行时动态通过代码改变SIZE是可以的。
      

  8.   

    这有什么难的,就是按了按钮,设置窗口的Width。
    if ((sender as Button).Text == ">>")
    {
        this.Width += 200;
        (sender as Button).Text = "<<";
    }
    else
    {
        this.Width -= 200;
        (sender as Button).Text = ">>";
    }
      

  9.   

    这个简单呀,控件放在splitContainer里,点击按钮后改变窗体宽即可
      

  10.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            Panel panelBottom=new Panel();
            Panel panelLeft=new Panel();
            Panel panelRight=new Panel();
            Button button=new Button();
            Splitter splitter = new Splitter();
            private Boolean isShow = true;
            private int dw = 0;
            private void Form1_Load(object sender, EventArgs e)
            {
                panelBottom.Height = 30;
                panelBottom.Dock = DockStyle.Bottom;
                button.Dock = DockStyle.Right;
                button.Click += new EventHandler(button_Click);
                panelBottom.Controls.Add(button);
                this.Controls.Add(panelBottom);
                panelLeft.BorderStyle = BorderStyle.Fixed3D;
                panelRight.BorderStyle = BorderStyle.Fixed3D;
                this.panelLeft.Dock = DockStyle.Fill;
                this.splitter.Dock = DockStyle.Right;
                this.panelRight.Dock = DockStyle.Right;
                this.Controls.Add(panelLeft);
                button_Click(null, null);
                dw = this.Width - this.panelLeft.Width;
            }        void button_Click(object sender, EventArgs e)
            {
                if (isShow)
                {
                    button.Text = "show>>";
                    int w = panelLeft.Width;
                    this.Controls.Remove(splitter);
                    this.Controls.Remove(panelRight);
                    this.Width = w + dw;
                }
                else
                {
                    button.Text = "hide<<";
                    this.Width = this.Width + panelRight.Width + splitter.Width;
                    this.Controls.Add(splitter);
                    this.Controls.Add(panelRight);
                }
                isShow = !isShow;
            }
        }
    }
      

  11.   

    上面这段代码应该能够满足你的要求。
    你把代码直接粘贴到你新建工程的窗口中就可以。所有组件都是用语句动态创建的。这里面的要点是:
    show/hide所要调整的宽度应当动态地测量出来,而不是写死。
    使用布局(Dock属性)组织左侧面板、分割条和右侧面板。
    窗口的宽度包括了边框。内部的宽度是客户区的宽度。你当然可以用API函数直接读出这个宽度。当你不想用API函数的时候,直接测量一下内部Dock为Fill的控件与窗口的宽度之差就可以了。代码里是dw。
    上面的代码由个小缺陷:第一次显示的时候,窗口的大小不是原始的PanelLeft加上两个边框的大小(就是PanelLeft.width),而显示完成后,PanelLeft的宽度比其初始值小2个窗口边框的宽度。如果你用API的方式测量窗口边框宽度当然就不会遇到这个问题。不过这并不影响什么,因为以布局方式构建的界面不需要一个特别精确的初始化大小。况且接下来的操作不会出现这个问题。
      

  12.   

    兄弟这么多人就你认真读了我的问题,不过我已经用splitcontainer实现了,你这个因为窗体外面有个control所以里面的控件不是从(0,0)开始排布的吧。
    结了~