【问题标题】:How to control docking order in WinFormsWinForms中如何控制停靠顺序
【发布时间】:2011-02-06 03:24:59
【问题描述】:

我正在寻找一种方法来控制项目停靠在我的控件顶部的顺序。

我注意到,当我将子项添加到我的控件(在设计器中或通过代码)时,最新的子项始终位于顶部。我希望新的孩子排在底部,年龄最大的排在顶部。

有没有办法通过代码做到这一点?在 WinForms 设计器中,RightClick->Order->BringToFront / SendToBack 正在做与我想做的类似的事情,但是如何以编程方式完成呢?

【问题讨论】:

  • 谢谢;我需要以编程方式控制停靠,但我什至没有意识到他们的订单控制了它们的停靠方式。

标签: c# winforms docking


【解决方案1】:

转到查看 → 其他窗口 → 文档大纲。

在该窗口中拖动控件,以便按照您喜欢的方式停靠。

【讨论】:

  • 我认为这应该是答案
  • 如果控件是动态添加的,这将不起作用。
  • 我发现窗口是按相反的顺序列出的。如果我只是在组件周围拖动,它们将彼此成为父级,这是我不想要的。我必须做什么才能将控件一个接一个地拖到同一个父控件列表的顶部,以相反的顺序使组件按所需的顺序排列。
  • 8 年后...最佳答案
  • 就是这个!只需拖动订单即可完美运行,多么棒的提示!
【解决方案2】:

使用这些方法:

myControl.SendToBack();
myControl.BringToFront();

【讨论】:

  • 我在寻找control.SendToFront() 看,现在这很容易。谢谢!
  • @Tommy:你通常在电脑后面编程吗? :)
  • 在设计窗口上,右键单击。选择 sendToBack 并再次右键单击:BringToFont
  • 此方法也适用于在表单设计器中添加停靠控件。使用上下文菜单,您可以发送到后面,然后带到前面然后停靠,它将是停靠“链”中的最后一个控件。
【解决方案3】:

正如您所说,添加到控件集合中的最新控件是最上面的控件。如果您需要在底部添加较新的控件,我建议创建控件列表,将控件添加到列表中,反转列表并将列表添加到控件集合中。

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());

【讨论】:

    【解决方案4】:

    一个控件有两种方法来实现你正在寻找的东西:BringToFrontSendToBack

    【讨论】:

      【解决方案5】:

      控件添加到 Controls 集合的顺序决定了停靠顺序。

      【讨论】:

      • 控件添加到集合后需要编辑停靠顺序
      • 然后使用ControlCollection.SetChildIndex(control, index) 方法。
      • @Oliver Hanappi:在设计师中可以做到这一点吗?没有代码?
      • 您应该能够在“文档大纲”窗口中重新排序控件 (blogs.msdn.com/b/zainnab/archive/2010/11/30/…)
      【解决方案6】:

      (为了显示另一个选项): 在 Visual Studio 2012(及更高版本)中:

      1. 选择要移到前面(或后面)的控件;
      2. 点击下面标记的按钮(放在前面/放在后面);

      这将使您能够将控件重新排列为您想要的顺序。

      【讨论】:

        【解决方案7】:

        请注意,以编程方式执行此操作时,有一种非常简单的方法可以实现此目的,即:

        containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
        

        【讨论】:

          【解决方案8】:

          使用 FlowLayoutPanel 它完全符合您的要求。

          【讨论】:

          • 这篇文章没有回答这个问题,这个问题已经有 6 年历史了,已经有相关答案了。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-20
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多