winforms WinForm UI组件层顺序

piv4azn7  于 2022-12-27  发布在  其他
关注(0)|答案(4)|浏览(266)

当我们在WinForms中添加任何UI或容器时,后面添加的组件会覆盖前面添加的组件,我们可以说它位于更高的层中。
添加元件后如何更改层顺序或元件顺序?

lbsnaicq

lbsnaicq1#

当您在同一位置放置多个控件时,一个控件将位于最上面,而另一个控件将位于最下面。通常这是由于一些小错误造成的,例如,错误地使用锚定和对接功能创建可调整大小的窗体。但是,在某些情况下,您可能需要重叠控件以获得特定效果。
当控件重叠时,由z轴索引决定哪个控件最后位于顶部。实际上,每个控件都存在于其各自不同的编号层中。如果重叠,则具有z轴索引层1的控件将显示在z轴索引层2中的控件之上。通常,一组控件的z轴索引由添加控件的顺序决定。以便添加的最后一个控件始终位于最顶层(z索引为0)。
但是,您可以更改这些选项。
若要确定或设置控件的z轴索引,可以使用Controls集合的GetChildIndex()SetChildIndex()方法。下面是将控件移动到z轴索引中第三层的示例。

Controls.SetChildIndex(ctrl, 2);

通常,您不需要这种查找粒度的控件。相反,您只需要将控件放到z索引的后面(最底层)或放到顶部。您可以在设计时通过右键单击控件并选择“移到前面”或“移到后面”来完成此功能。您还可以使用Control.BringToFront()Control.SendToBack()方法以编程方式执行相同的任务。

ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0);
zlhcx6iw

zlhcx6iw2#

是在代码中动态加载组件还是在设计器中动态加载组件?如果是在设计器中动态加载组件,则可以使用 * 格式-〉顺序-〉置后 * 和 * 格式-〉顺序-〉置前 * 命令。右键单击控件时,上下文菜单中也会显示 * 置后 * 和 * 置前 * 命令。以及在使用窗体设计器时自动出现的“布局”工具栏中。

ve7v8dk2

ve7v8dk23#

在设计器视图中,还可以打开“文档大纲”面板以查看当前窗体/控件的树结构,然后“向上”和“向下”拖动组件以将其置于容器的前面和后面,以及将其置于容器的内部和外部。

nxowjjhe

nxowjjhe4#

你试过玩Z-Order吗?
参见:Control.SentToBack方法-大多数Winform控件都应该支持这个方法。

相关问题