【问题标题】:WinForm UI components layer orderWinForm UI 组件层顺序
【发布时间】:2010-11-23 23:26:23
【问题描述】:

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

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

【问题讨论】:

    标签: c# winforms components layer


    【解决方案1】:

    你试过Z-Order吗?

    另请参阅:Control.SentToBack 方法 - 大多数 Winform 控件应因此支持这一点。

    【讨论】:

      【解决方案2】:

      当你在同一个地方放置多个控件时,一个会在上面,另一个会在下面。通常这是一个小错误的结果,例如错误地使用锚定和停靠功能创建可调整大小的表单。但是,在某些情况下,您可能希望重叠控件以获得特定效果。

      当控件重叠时,z-index 决定了哪个控件最终位于顶部。基本上,每个控件都存在于其自己不同的编号层中。具有 z-index 层 1 的控件将出现在 z 中的控件上方- 如果它们重叠,则为第 2 层。通常,一组控件的 z-index 由您添加控件的顺序决定,因此您添加的最后一个控件始终位于最顶层(带有 z-index 0)。

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

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

      Controls.SetChildIndex(ctrl, 2);
      

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

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

      【讨论】:

      • 我发现它很有帮助。还发现 GetChildIndex 可以在运行时确定哪个控件位于顶部。谢谢。
      【解决方案3】:

      是在代码中还是在设计器中动态加载组件时?如果它在设计器中,您可以使用 Format -> Order -> Send to BackFormat -> Order -> Bring to Front 命令。 Send to BackBring to Front 也可在您右键单击控件时在上下文菜单中使用,以及在“布局”工具栏中应自动出现您在表单设计器中工作。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 查看>OtherWindows>DocumentOutline 或使用快捷键 Ctrl+W, U
        猜你喜欢
        • 2015-01-23
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        相关资源
        最近更新 更多