如何在WinForms中控制对接顺序

cae*_*say 73 c# docking winforms

正如标题所述,我正在寻找一种方法来控制物品停靠在我控制之上的顺序.

我和Windows窗体设计师一起玩过,我似乎无法找到RightClick->Order->SendToFront正在做的事情,因为这正是我想要发生的事情.至于我可以发生的事情,当我将我的内容添加到我的控件中时,最新的内容始终位于顶部,我希望新的内容位于底部,最旧的内容位于最佳.

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

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

Sto*_*net 133

转到视图→其他窗口→文档大纲.

在该窗口中拖动控件,以便根据您的喜好进行对接.

  • 我认为这应该是答案 (12认同)
  • 我发现窗口是按相反顺序列出的。如果我只是拖动组件,它们就会相互成为父级,这是我不希望的。我必须做什么,以相反的顺序将控件一个接一个地拖动到同一父控件的控件列表的顶部,以使组件按所需的顺序排列。 (4认同)
  • 8年后...最佳答案 (2认同)
  • 就是这个!只需拖动订单即可完美运行,这是一个很棒的提示! (2认同)

ser*_*hio 72

使用这些方法:

myControl.SendToBack();
myControl.BringToFront();
Run Code Online (Sandbox Code Playgroud)

  • @Tommy:您通常是从计算机后面编程吗?:) (10认同)
  • 在设计窗口中,右键单击.选择sendToBack并再次右键单击:BringToFont (3认同)
  • 我正在寻找`control.SendToFront()`看,现在这很容易.谢谢! (2认同)

Ale*_*pin 11

正如你所说,添加到控件集合中的最新控件是顶部控件.如果你需要一个新的控制在底部加入,我会建议创建一个列表控件,该控件添加到列表中,反向列表,列表中添加到控件集合.

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
Run Code Online (Sandbox Code Playgroud)


Ger*_*nck 6

控件有两种方法可以实现所需的功能:BringToFrontSendToBack


Jac*_*ack 5

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

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
Run Code Online (Sandbox Code Playgroud)