如何让子窗体随着主窗体的尺寸变化自动改变大小?
有个问题请教,看看如何实现
我的界面是这样的,左侧是一个导航栏,右侧是放窗体的地方,主要是一个tabcontrol控件,当打开一个窗体时,就在tabcontrol上加了一页,这时,这个子窗体的大小是合适的,当隐藏导航栏时,tabcontrol的宽度就变大了。这时,子窗体的仍然是原来的尺寸,不合适,如何让子窗体跟着tabcontrol来自动变宽。

解决方案 »

  1.   

    DockorAnchor属性...没事儿看看MSDN...
      

  2.   

    不行啊
    子窗体是动态加载上的,如下 :
    fpdy fpdy = new fpdy(this);  //实例化表单,并把自身做为参数传递过去
    System.Windows.Forms.Control ctlForm = fpdy;
    Crownwood.Magic.Controls.TabPage tp = new Crownwood.Magic.Controls.TabPage("自来水收费",ctlForm);
    this.tabControl1.TabPages.Add(tp).Selected = true;这个tabcontrol1的左侧是一个分隔导航栏,初始是展开的,在导航栏中点击选项,就打开了一个tabcontrol子页,并加载了一个子窗体,
    我在子窗体的load中加入如下代码:
    this.Size = this.Parent.Size;
    this.WindowState = FormWindowState.Maximized;
    这样初始打开时,大小是没有问题的,但是如果这时隐藏导航栏,tabcontrol就会往左移,并扩展为全屏,但是里面的子窗体还是刚初始的样子,变不了。
      

  3.   

    在窗体的属性里也找不到Anchor 
      

  4.   

    在tablepage的resize事件或者sizechanged事件中控制你的窗体大小与位置
      

  5.   

    我试着这样做了,还是不行
            private void tabControl1_SizeChanged(object sender, EventArgs e)
            {
                try
                {
                    foreach (childpage temp in mypage)   //检测tabpage的title值,来决定释放哪个表单
                    {
                        temp.myformname2.Size = temp.myformname2.Parent.Size;
                        temp.myformname2.WindowState = FormWindowState.Maximized;
                    }
                }
                catch (System.Exception Er)
                {            }
            }
    //mypage是我做的一个动态数组,用来存放打开的子窗体的名称,myformname2是代表名称的属性
      

  6.   

    我试着这样做了,还是不行
            private void tabControl1_SizeChanged(object sender, EventArgs e)
            {
                try
                {
                    foreach (childpage temp in mypage)   //检测tabpage的title值,来决定释放哪个表单
                    {
                        temp.myformname2.Size = temp.myformname2.Parent.Size;
                        temp.myformname2.WindowState = FormWindowState.Maximized;
                    }
                }
                catch (System.Exception Er)
                {            }
            }
    //mypage是我做的一个动态数组,用来存放打开的子窗体的名称,myformname2是代表名称的属性
      

  7.   

    我试着这样做了,还是不行
            private void tabControl1_SizeChanged(object sender, EventArgs e)
            {
                try
                {
                    foreach (childpage temp in mypage)   //检测tabpage的title值,来决定释放哪个表单
                    {
                        temp.myformname2.Size = temp.myformname2.Parent.Size;
                        temp.myformname2.WindowState = FormWindowState.Maximized;
                    }
                }
                catch (System.Exception Er)
                {            }
            }
    //mypage是我做的一个动态数组,用来存放打开的子窗体的名称,myformname2是代表名称的属性
      

  8.   

    将tableLayoutPanel写Panel配合使用(前者放外面,后者放里面),,将你要需要和主窗体一起改变大小的地方在tableLayoutPanel的Columns中用百分比,不需要改变的地方用固定值,Panel设dock属性
      

  9.   

    --------如何让子窗体跟着tabcontrol来自动变宽。
    子窗体.parent=tabcontrol.pages[index];
    子窗体.dock=dockstyle.dock;主要是代码里控制子窗体的dock属性!