代码改变世界

C#在splitContainer1控件和panel控件中显示窗体

2013-09-20 11:52  糯米粥  阅读(6140)  评论(0编辑  收藏  举报

现在有两个窗体 Form1 和Form2 

Form1中有控件splitContainer1 和panel 。控件。我们希望Form2在splitContainer1或者panel控件中显示

1:首先看在splitContainer1中显示。splitContainer控件本身就分为panel1和panel2两部分。我们可以上下布局和左右布局。

我这里是上下布局,我把Form2在splitContainer1中的panel1中显示

先把Form1为MDI容器 即属性 IsMdiContainer=true

我把代码写在Form1的load事件中。让窗体加载就显示

 private void Form1_Load(object sender, EventArgs e)
        {
            //splitContainer1控件
            Form2 u = new Form2();
            //u.Top = -25;
            //u.Dock = DockStyle.Fill; //充满父容器
            //u.FormBorderStyle = FormBorderStyle.None; //不显示边框
            //this.splitContainer1.Panel1.Controls.Clear();
            u.MdiParent = this;
            u.Parent = this.splitContainer1.Panel1;
            u.Show();

        }

 

2:在panel中显示窗体 。只需改少量代码  《就不上图了》

 private void Form1_Load(object sender, EventArgs e)
        {
            //splitContainer1.Panel1.Container.Add("");
            //Form2 d = new Form2();
            //d.MdiParent = this;
            //d.Show();

            //splitContainer1控件
            Form2 u = new Form2();
            u.TopLevel = false;
            //u.Top = -25;
            //u.Dock = DockStyle.Fill; //充满父容器
            //u.FormBorderStyle = FormBorderStyle.None; //不显示边框
            //this.splitContainer1.Panel1.Controls.Clear();
            //u.MdiParent = this;
            //u.Parent = this.splitContainer1.Panel1;
            //u.Show();

            Form2 x = new Form2();
            x.TopLevel = false; //既然是子窗体就不能是顶级窗体
            this.panel1.Controls.Add(x);
            x.Show();
        }

 

窗体是显示出来了。如果你觉得显示了 最大化。最小化 删除按钮不喜欢。想让别人家看上去完全是一个窗体的效果。

我们可以通过上面的代码u.Top = -25 距离顶部的距离(控件panel1 或者splitContainer1.panel1顶部的距离)。是负数则向上移。那么splitContainer1或者

panel1控件就会遮住最大化。最小化 删除按钮 。不过这个值的大小。需要自己尝试,不一定是 -25。或者。你可以索性设置Form2的属性设置: FormBorderStyle.None;