WinForm UI组件层顺序

时间:2009-08-29 10:15:31

标签: c# winforms components layer

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

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

4 个答案:

答案 0 :(得分:31)

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

当控制重叠时,它是确定哪个控件最终位于顶部的z-index。实际上,每个控件都存在于其自己的不同编号层中。具有z-index图层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);

答案 1 :(得分:28)

是否在代码或设计器中动态加载组件?如果它在设计器中,您可以使用格式 - >订单 - >发送至后面格式 - >订单 - >带到前面命令。右键单击控件时,在右键菜单中也可以使用发送到后面置于前面,以及在“布局”工具栏中自动出现时你在表单设计师工作。

答案 2 :(得分:11)

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

答案 3 :(得分:5)

您是否尝试使用Z-Order

另请参阅:Control.SentToBack方法 - 大多数Winform控件都应该支持此功能。