在winform中我有一个Main做为主窗体。在Main中我放置了splitContainer1控件分为panel1和panel2两部分。在panel1中我放置菜单项目。panel2中我根据panel1中菜单的点击加载窗体在panel2中显示。但是我要如何控制才能让窗体在panel2中显示的时候始终是充满panel2的。并且当主窗体main拖动改变大小时,panel2中的窗体随着自动变化。

解决方案 »

  1.   

    splitContainer1.Dock = Dock.Fill
      

  2.   

    Dock 或 Anchor 属性...
      

  3.   

    那你看看splitContainer1控件的父容器是什么你这样看看效果this.splitContainer1.Parent = this;
    splitContainer1.Dock = Dock.Fill;
      

  4.   

    我已经将splitContainer1放在主窗体main当中。已经是填充整个main了。我是说我根据菜单加载的其他窗体放在了splitContainer1的panel2中,就是说其他窗体在panel2中是不根据panel2的大小变化而变化的
      

  5.   

    设置你所谓的“其他窗体”(窗体?)的Dock或Anchor属性...每次加载都要设置...
      

  6.   

    嗯 每次加载后都需要 例如MyControl mcon = new MyControl();
    mcon.Parent = this.SContner.Panel2;
    mcon.Dock = DockStyle.Fill;
      

  7.   

    private void navBarControl1_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
            {
                this.splitContainer1.Panel2.Controls.Clear();
                this.splitContainer1.Panel2.SuspendLayout();            LoadForm("DispatchDep.Form_DDSearch");
            }        /// <summary>
            /// 加载窗体
            /// </summary>
            /// <param name="form">窗体名称</param>
            private void LoadForm(string FormName)
            {
                object obj = null;            try
                {                
                    Assembly assm = Assembly.LoadFrom(Application.StartupPath + "\\LTMS.exe");
                    Type TypeToLoad = assm.GetType("LTMS." + "DispatchDep.Form_DDSearch");
                    obj = Activator.CreateInstance(TypeToLoad);
                }
                catch (Exception ex)
                {
                    Common.AlertMessage.ErrorMsg(ex.Message);
                }            Form form = (Form)obj;
                form.TopLevel = false;
                
                form.FormBorderStyle = FormBorderStyle.None;
                this.splitContainer1.Panel2.Controls.Add(form);
                form.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
                            | System.Windows.Forms.AnchorStyles.Right)));
                form.Parent = this.splitContainer1.Panel2;
                form.Dock = DockStyle.Fill;
                form.Show();        }我已经这样子写了可还是不行!
      

  8.   

    可能不是Dock那么简单,楼主应该会想到Dock的
      

  9.   

    Form...还真是窗体啊...-_-!Form哪能这样用啊...它也没有Dock和Anchor属性啊...
      

  10.   

    form.WindowState = FormWindowState.Maximized;
      

  11.   

    你不会用UserControl啊...窗体顾名思义就是独立显示的嘛...
      

  12.   

    private void navBarControl1_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
            {
                this.splitContainer1.Panel2.Controls.Clear();
                this.splitContainer1.Panel2.SuspendLayout();            LoadForm("DispatchDep.Form_DDSearch");            this.splitContainer1.Panel2.ResumeLayout();//加上这句话就好用了!        }