我创建了一个800*600的MDI父窗体,然后在父窗体中创建了一个子窗体并让子窗体占满了父窗体,现在想要在让父窗体最大化时,让子窗体仍然占满父窗体,应该怎么做,请各位大侠指点指点.

解决方案 »

  1.   

    这个比较难,因为好象没有窗口最大化时的系统事件侦听,只有一个窗口尺寸改变时的事件所以不好在MDI窗口最大化时触发一个响应,要不然可以想办法在这里编码来让子窗口根着最大化;
      

  2.   

    把子窗口设置为最大化就可以了。另外,如果要捕抓最大化或最小化事件,可以在要捕抓的Form里重写WndProc,如下:        protected override void WndProc(ref Message m)
            {
                if (m.Msg == 0x0005)
                {
                    switch (m.WParam.ToInt32())
                    {
                        case 1:
                            //在这添加最小化时要执行的代码
                            this.Text = "最小化";
                            break;
                        case 2:
                            //在这添加最大化时要执行的代码
                            this.Text = "最大化";
                            break;
                    }
                }
                base.WndProc(ref m);
            }
      

  3.   

    可以把子窗体的WindowState设置为Maximized
    你窗体大时,子窗体就跟着大
    如果不是
    那么就要在你窗体的SizeChanged中处理子窗体的大小了
      

  4.   

    那你可以在父窗体的大小改变时
    你用
    子窗体.WindowState=Normal;
    子窗体.Startpostion=Manual;
    子窗体.Loacation=new Point(0,0)
    子窗体.Size=new Size(父窗体的宽,父窗体的高)
    其中,设置子窗体的高与宽时
    如果你父窗体中有子控件时,你可以减掉它的高或宽
      

  5.   


    这段代码要写在哪个事件里?
    我把他写在了SizeChanged事件里了不知道对不对,另外,上面代码中找不到我标出来红色的那两个值.
      

  6.   

    设定一个窗口值变量,当主窗体变大时,窗体的SizeChanged中设定一下子窗体的大小值。
      

  7.   

    子窗体.WindowState=System.Windows.Forms.FormWindowState.Normal; 
    子窗体.Startpostion=System.Windows.Forms.FormStartPosition.Manual; 
    子窗体.Loacation=new Point(0,0) 
    在子窗体创建时定义
    子窗体.Size=new Size(父窗体的宽,父窗体的高) 
    在SizeChanged时改变当然,如果你但心在此时子窗体的位置已经不是0,0时,你可再加一次
    子窗体.Loacation=new Point(0,0)
      

  8.   

    To 8楼在主窗口写,要捕抓的Form里重写WndProc