1. 在 Form 中加入一个 Panel 控件,并设置成 Left 停靠。
2. 在 Panel 中加入第一个控件,设置成 Top 停靠。
3. 在 Panel 中加入一个 Splitter 控件,设置成 Top 停靠。
4. 在 Panel 中加入第二个控件,设置成 Fill 停靠。
5. 在 Form 中加入一个 Splitter 控件,设置成 Left 停靠。
6. 在 Form 中加入第三个控件,并设置成 Top 停靠。
7. 在 Form 中加入一个 Splitter 控件,设置成 Top 停靠。
8. 在 Form 中加入第四个控件,并设置成 Fill 停靠。即告成功。控件的 Z 轴顺序很关键,次序一乱,所有的停靠布局就乱了。

解决方案 »

  1.   

    使用panel 和split来分割,可以制作任意的样式
      

  2.   

    我查阅了msdn,参见了阿扁的意见,已经搞定了,谢谢,我原来是mfc程序员,多多交流,下面是源代码:private void CreateMySplitControls()//创建分割窗口
       {
         Panel panel=new Panel();//左边贴一张面板
         panel.Dock=DockStyle.Left;
         panel.TabIndex=4;     TreeView tree=new TreeView();//左上角一棵树
         tree.Dock=DockStyle.Top;
         tree.Height=ClientSize.Height*9/10;
         tree.TabIndex=0;
         tree.Nodes.Add("treeview");
         
         Splitter split3=new Splitter();
         split3.Dock=DockStyle.Top;
         split3.BackColor=Color.Blue;
         split3.TabIndex=1;
         split3.TabStop=false;          
         PictureBox pic=new PictureBox();//左下角全景图
         pic.Dock=DockStyle.Fill;
         pic.TabIndex=1;
         pic.SizeMode = PictureBoxSizeMode.StretchImage;
         Bitmap overview=new Bitmap("overview.jpg");
         pic.Image=(Image)overview;
              panel.Controls.AddRange(new Control[]{pic,split3,tree});     Splitter split1=new Splitter();//面板右边画一个分割线
         split1.Dock=DockStyle.Left;
         split1.BackColor=Color.Red;
         split1.TabIndex=1;
         split1.TabStop=false;
         
         ListView list=new ListView();//右上角一个表
         list.Dock=DockStyle.Top;
         list.Height=ClientSize.Height*2/3;
         list.TabIndex=2;
         list.Items.Add("listview");
         
         Splitter split2=new Splitter();//表下面一个分割线
         split2.Dock=DockStyle.Top;
         split2.Height=3;
         split2.BackColor=Color.Blue;
         split2.TabIndex=1;
         split2.TabStop=false;
        
         RichTextBox richtext=new RichTextBox();//右下角一张纸
         richtext.Dock=DockStyle.Fill;
         richtext.TabIndex=3;
         richtext.Text="richtextbox";     Controls.AddRange(new Control[]{richtext,split2,list,split1,panel});
       }