Dyr*_*dek 2 xml vb.net layout controls winforms
我们向 FlowLayoutPanel 添加了属性“Dock = Dockstyle.Fill”,以便它调整大小并填充其父控件。现在我们向 FlowLayoutPanel 添加了两个 GroupBox。这些应该与面板具有相同的宽度,但是当我们使用“Dock = Dockstyle.Top”时它不起作用。
问题是,我们试图用“Width = Parent.Width”设置宽度。这会起作用,但使用我们的方法,通过 XML 文件创建 UI,在我们想要设置宽度的那一刻,GroupBoxes 还没有父级。稍后将添加到 FlowLayoutPanel 中。
顺便说一下,我们还在 FlowLayoutPanel 中添加了“FlowDirection = TopDown”,但是如果 GroupBoxes 变小,它会将它们并排放置而不是 TopDown。
因此,我们正在寻找一种方法来让所有控件位于彼此下方,并使所有 GroupBox 与 FlowLayoutPanel 具有相同的宽度。
感谢每一个帮助,
多米尼克
在您描述的情况下,当您只想要自上而下的流程时,您可以简单地使用 Panel 而不是 FlowLayoutPanel。面板设置AutoScroll为true,它Dock以Fill再到面板和设置中添加组框Dock他们的财产Top。
注意:
对于将来的使用,FlowLayoutPanel您可能会发现这很有帮助:
如何:在 FlowLayoutPanel 控件中锚定和停靠子控件
这是 FlowLayoutPanel 控件中锚定和停靠的一般规则:
对于垂直流向,FlowLayoutPanel 控件根据列中最宽的子控件计算隐含列的宽度。此列中具有 Anchor 或 Dock 属性的所有其他控件都对齐或拉伸以适合此隐含列。对于水平流动方向,该行为以类似的方式工作。FlowLayoutPanel 控件从行中最高的子控件计算隐含行的高度,并且该行中所有停靠或锚定的子控件都对齐或调整大小以适合隐含行。
例子:
例如以下,如果您运行以下代码:
for (int i = 0; i < 5; i++)
{
var control = new GroupBox()
{
Text = i.ToString(),
Dock = DockStyle.Top,
Height = 40
};
this.panel1.Controls.Add(control);
//To reverse the order, uncomment following line
//control.BringToFront();
}
Run Code Online (Sandbox Code Playgroud)
结果将是:
4
3
2
1
0
Run Code Online (Sandbox Code Playgroud)
您可以通过取消注释代码来颠倒项目的顺序。