87

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

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

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

4

8 回答 8

156

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

在该窗口中拖动控件,使停靠成为您喜欢的样子。

于 2010-04-09T13:07:19.467 回答
82

使用这些方法:

myControl.SendToBack();
myControl.BringToFront();
于 2010-04-09T13:16:49.983 回答
13

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

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
于 2010-04-09T13:17:24.380 回答
6

控件有两种方法来实现您要查找的内容:BringToFrontSendToBack.

于 2010-04-09T12:58:20.330 回答
4

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

于 2010-04-09T13:12:16.173 回答
3

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

  1. 选择要移到前面(或后面)的控件;
  2. 单击下面标记的按钮(带到前面/发送到后面); 在此处输入图像描述

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

于 2016-11-03T09:26:16.323 回答
3

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

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
于 2019-08-09T05:29:31.103 回答
-4

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

于 2016-04-01T14:54:30.160 回答