如何在WinForms中控制停靠顺序


78

如标题所示,我正在寻找一种方法来控制项目停靠在控件顶部的顺序。

我曾与Windows窗体设计器一起玩过,但我似乎找不到RightClick->Order->SendToFront正在做什么,因为那正是我想要发生的事情。据我所知,将内容添加到控件中时,最新的内容始终位于顶部,我希望较新的内容位于底部,而最旧的内容位于顶部最佳。

简介: WinForms(C#)中是否有一种简单的方法来控制事物停靠在控件两侧的顺序?

编辑:添加控件时,我必须从后面的代码中执行此操作,我无法使用WinForm设计器的任何功能,但是我想做的是模仿WinForms设计器SendToBackSendToFront功能


谢谢; 我需要以编程方式控制停靠,我什至没有意识到他们的订单可以控制停靠的方式。
鹰眼2014年

Answers:


78

使用以下方法:

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

2
我一直在寻找control.SendToFront()See,现在很简单。谢谢!
caesay 2010年

10
@Tommy:您通常是在计算机后面编程吗?:)
Ashley Tate

6
在设计窗口中,右键单击。选择sendToBack,然后再次右键单击:BringToFont
Gray Wolf,

此方法还适用于在表单设计器中添加停靠控件。使用上下文菜单,您可以发送回去,然后移到最前面,然后停靠,它将成为停靠“链”中的最后一个控件。
安德斯·林登

141

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

在该窗口中拖动控件,以便对接随心所欲。


我想知道我可以用什么词来描述那个确切的窗口,最终在Google上到达那里,谢谢!
Coops 2011年

12
我认为这应该是答案
Xinchao

1
如果动态添加控件,则无法使用。
韦恩

在设计时轻松解决我的问题。
阮阮

1
8年后...最佳答案
18

12

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

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


4

将控件添加到Controls集合的顺序确定对接顺序。


将控件添加到集合后,我需要编辑停靠顺序
caesay 2010年

2
然后去找ControlCollection.SetChildIndex(control, index)方法。
奥利弗·哈纳皮

@Oliver Hanappi:是否可以在设计器中执行此操作?没有代码?
user2366975

你应该能够在文档大纲窗口重新排序控件(blogs.msdn.com/b/zainnab/archive/2010/11/30/...
奥利弗Hanappi

3

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

  1. 选择要移到前面(或后面)的控件;
  2. 单击以下标记的按钮(“移到前面” /“发送到后面”); 在此处输入图片说明

这样您就可以将控件重新排列为所需的顺序。


2

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

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

-3

使用FlowLayoutPanel可以完全满足您的需求。


1
这篇文章没有回答这个问题,这个问题已经有6年历史了,已经有了相关的答案。
caesay 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.