Windows窗体侧面板,具有拆分水平面板布局

时间:2017-10-28 03:36:33

标签: c# .net winforms layout

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

enter image description here

我想避免使用拖放工具。

到目前为止

我的小组代码:

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);

1 个答案:

答案 0 :(得分:1)

  

控件停靠在它们的Z顺序中,这是沿着表格的Z轴(深度)对表单上的控件进行可视化分层。   <子> [MSDN]

因此,向容器添加控件的顺序非常重要。例如,为了获得预期的布局,您可以在另一个中添加控件:

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 });

注意:

  • 除非您在运行时基于自定义逻辑创建一些动态UI,否则不要使用Windows窗体的设计器。
  • 如果您正在使用设计器,则只需使用文档大纲窗口即可更改控件的z-index。要显示窗口,请转到查看→其他Windows→文档大纲
  • 如果您正在使用设计器,则可以使用发送至背面布局工具栏进行前置命令,或者右键单击控制。
  • 使用代码,您可以使用控件的SendToBackBringToFrom方法将其置于前面或将其发送到所有控件的后面。
  • 使用代码,您可以使用容器控件的SetChildIndex方法来设置控件的z-index。
  • 作为另一种选择,您可以混合两个SplitContainer控件。