C# Windows窗体具有拆分水平面板布局的侧面板

C# Windows窗体具有拆分水平面板布局的侧面板,c#,.net,winforms,layout,C#,.net,Winforms,Layout,所以我一直在尝试做这个布局。到目前为止,我已经能够使用DockStyle.Left完成第一个面板。但是,当我尝试添加第二个时,它会与第一个重叠。另外,添加/管理面板的最佳方式是什么?因此,当我添加第三个面板时,两个面板的高度都是UI高度的一半 我想避免使用拖放工具 到目前为止,使用我的面板进行编码: Panel backPanel = new Panel(); backPanel.Dock = DockStyle.Fill; Panel panel1 = new Panel(); panel

所以我一直在尝试做这个布局。到目前为止,我已经能够使用DockStyle.Left完成第一个面板。但是,当我尝试添加第二个时,它会与第一个重叠。另外,添加/管理面板的最佳方式是什么?因此,当我添加第三个面板时,两个面板的高度都是UI高度的一半

我想避免使用拖放工具

到目前为止,使用我的面板进行编码:

Panel backPanel = new Panel();
backPanel.Dock = DockStyle.Fill;

Panel panel1 = new Panel();
panel1.Dock = DockStyle.Left;
panel1.BackColor = Color.Red;

Panel panel2 = new Panel();
panel2.Dock = DockStyle.Top;
panel2.BackColor = Color.Cyan;

backPanel.Controls.Add(panel1);
backPanel.Controls.Add(panel2);
this.Controls.Add(backPanel);
控件按Z顺序停靠,Z顺序是窗体上控件沿窗体Z轴(深度)的视觉分层。

因此,将控件添加到容器的顺序很重要。例如,为了获得预期的布局,您可以在以下位置添加控件:

var panel1 = new Panel() { BackColor = Color.Red, Dock = DockStyle.Left };
var panel2 = new Panel() { BackColor = Color.Green, Dock = DockStyle.Top };
var panel3 = new Panel() { BackColor = Color.Blue, Dock = DockStyle.Fill };
this.Controls.AddRange(new[] { panel3, panel2, panel1 });
注意:

  • 不要避免使用Windows窗体设计器,除非您在运行时基于自定义逻辑创建一些动态UI
  • 如果您使用的是designer,那么只需使用DocumentOutline窗口更改控件的z索引即可。要显示窗口,请转到“查看”→ 其他窗口→ 文件大纲
  • 如果使用的是designer,则可以从布局工具栏或通过右键单击控件使用“发送到后面”和“带到前面”命令
  • 使用代码,您可以使用控件的
    SendToBack
    BringToFrom
    方法将其置于所有控件的前面或后面
  • 使用代码,您可以使用容器控件的
    SetChildIndex
    方法来设置控件的z索引
  • 作为另一个选项,您可以混合使用两个
    SplitContainer
    控件