当我们在WinForms中添加任何UI或容器时,后面添加的组件会覆盖前面添加的组件,我们可以说它位于更高的层中。添加元件后如何更改层顺序或元件顺序?
lbsnaicq1#
当您在同一位置放置多个控件时,一个控件将位于最上面,而另一个控件将位于最下面。通常这是由于一些小错误造成的,例如,错误地使用锚定和对接功能创建可调整大小的窗体。但是,在某些情况下,您可能需要重叠控件以获得特定效果。当控件重叠时,由z轴索引决定哪个控件最后位于顶部。实际上,每个控件都存在于其各自不同的编号层中。如果重叠,则具有z轴索引层1的控件将显示在z轴索引层2中的控件之上。通常,一组控件的z轴索引由添加控件的顺序决定。以便添加的最后一个控件始终位于最顶层(z索引为0)。但是,您可以更改这些选项。若要确定或设置控件的z轴索引,可以使用Controls集合的GetChildIndex()和SetChildIndex()方法。下面是将控件移动到z轴索引中第三层的示例。
GetChildIndex()
SetChildIndex()
Controls.SetChildIndex(ctrl, 2);
通常,您不需要这种查找粒度的控件。相反,您只需要将控件放到z索引的后面(最底层)或放到顶部。您可以在设计时通过右键单击控件并选择“移到前面”或“移到后面”来完成此功能。您还可以使用Control.BringToFront()或Control.SendToBack()方法以编程方式执行相同的任务。
Control.BringToFront()
Control.SendToBack()
ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0);
zlhcx6iw2#
是在代码中动态加载组件还是在设计器中动态加载组件?如果是在设计器中动态加载组件,则可以使用 * 格式-〉顺序-〉置后 * 和 * 格式-〉顺序-〉置前 * 命令。右键单击控件时,上下文菜单中也会显示 * 置后 * 和 * 置前 * 命令。以及在使用窗体设计器时自动出现的“布局”工具栏中。
ve7v8dk23#
在设计器视图中,还可以打开“文档大纲”面板以查看当前窗体/控件的树结构,然后“向上”和“向下”拖动组件以将其置于容器的前面和后面,以及将其置于容器的内部和外部。
nxowjjhe4#
你试过玩Z-Order吗?参见:Control.SentToBack方法-大多数Winform控件都应该支持这个方法。
4条答案
按热度按时间lbsnaicq1#
当您在同一位置放置多个控件时,一个控件将位于最上面,而另一个控件将位于最下面。通常这是由于一些小错误造成的,例如,错误地使用锚定和对接功能创建可调整大小的窗体。但是,在某些情况下,您可能需要重叠控件以获得特定效果。
当控件重叠时,由z轴索引决定哪个控件最后位于顶部。实际上,每个控件都存在于其各自不同的编号层中。如果重叠,则具有z轴索引层1的控件将显示在z轴索引层2中的控件之上。通常,一组控件的z轴索引由添加控件的顺序决定。以便添加的最后一个控件始终位于最顶层(z索引为0)。
但是,您可以更改这些选项。
若要确定或设置控件的z轴索引,可以使用Controls集合的
GetChildIndex()
和SetChildIndex()
方法。下面是将控件移动到z轴索引中第三层的示例。通常,您不需要这种查找粒度的控件。相反,您只需要将控件放到z索引的后面(最底层)或放到顶部。您可以在设计时通过右键单击控件并选择“移到前面”或“移到后面”来完成此功能。您还可以使用
Control.BringToFront()
或Control.SendToBack()
方法以编程方式执行相同的任务。zlhcx6iw2#
是在代码中动态加载组件还是在设计器中动态加载组件?如果是在设计器中动态加载组件,则可以使用 * 格式-〉顺序-〉置后 * 和 * 格式-〉顺序-〉置前 * 命令。右键单击控件时,上下文菜单中也会显示 * 置后 * 和 * 置前 * 命令。以及在使用窗体设计器时自动出现的“布局”工具栏中。
ve7v8dk23#
在设计器视图中,还可以打开“文档大纲”面板以查看当前窗体/控件的树结构,然后“向上”和“向下”拖动组件以将其置于容器的前面和后面,以及将其置于容器的内部和外部。
nxowjjhe4#
你试过玩Z-Order吗?
参见:Control.SentToBack方法-大多数Winform控件都应该支持这个方法。