WinForm UI组件层顺序

问题描述 投票:20回答:4

当我们在WinForms中添加任何UI或容器时,后面添加的组件来自早期添加的组件,我们可以说它位于更高层。

如何在添加组件后更改图层顺序或组件顺序?

c# winforms components layer
4个回答
28
投票

是在代码中还是在设计器中动态加载组件时?如果它在设计器中,您可以使用格式 - >顺序 - >发送到后面和格式 - >顺序 - >置于前面命令。右键单击控件时,在上下文菜单中也可以使用“发送到后面”和“置于前面”,以及在“表单设计器”中工作时应自动显示的“布局”工具栏中。


31
投票

当您在同一个地方放置多个控件时,一个将最终位于顶部,另一个将最终位于下方。通常这是一个小错误的结果,例如错误地使用锚定和停靠功能来修改可调整大小的形式但是,在某些情况下,您可能希望重叠控件以获得特定效果。

当控制重叠时,它是确定哪个控件最终位于顶部的z索引。实际上,每个控件都存在于其自己的不同编号层中。具有z索引层1的控件将出现在z-index层中的控件上方2,如果它们重叠。通常,一组控件的z-index由添加控件的顺序决定,这样你添加的最后一个控件总是在最顶层(z-index为0) 。

但是,您可以更改这些选项。

要确定或设置控件的z-index,可以使用Controls Collection的GetChildIndex()SetChildIndex()方法。这是一个将控件移动到z-index中第三层的示例。

Controls.SetChildIndex(ctrl, 2);

通常,你不需要这种发现粒度的控制。相反,你只需要将控件放到z-index的背面(最底层)或将它带到顶部。你可以通过右键单击控件并选择Bring to Fron或Send to Back,您可以在设计时完成此功能。您还可以使用Control.BringToFront()Control.SendToBack()方法以编程方式执行相同的任务。

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

11
投票

在设计器视图中,您还可以打开“文档大纲”面板以查看当前表单/控件的树结构,然后拖动组件,“向上”和“向下”以前后移动,以及进出集装箱。


5
投票

你尝试过使用Z-Order吗?

另请参见:Control.SentToBack方法 - 大多数Winform控件应该由此支持。

© www.soinside.com 2019 - 2024. All rights reserved.