c# - para - sistema de amarre y fondeo de un buque
Cómo controlar el orden de atraque en WinForms (7)
Como dice el título, estoy buscando una manera de controlar el orden en que los artículos se acoplan a la parte superior de mi control.
He jugado con el diseñador de formularios de Windows, y parece que no puedo encontrar lo que está haciendo RightClick->Order->SendToFront
, porque eso es exactamente lo que quiero que suceda. En la medida en que puedo llegar a pasar, al agregar mis contenidos a mi control, los contenidos más nuevos siempre están en la parte superior, y me gustaría que los contenidos más recientes estén en la parte inferior, y los contenidos más antiguos estén en la parte superior. parte superior.
Resumen: ¿Existe alguna manera fácil en WinForms (C #) para controlar el orden en que las cosas se acoplan a los lados de los controles?
Editar: Tengo que hacer esto desde el código subyacente a medida que agrego mis controles, no puedo usar ninguna característica del diseñador de WinForm, pero lo que estoy tratando de hacer es imitar las SendToBack
WinForms Designer SendToBack
y SendToFront
(Por el motivo de mostrar otra opción): en Visual Studio 2012 (y posterior):
- Seleccione el control que desea mover al frente (o hacia atrás);
- Haga clic en los botones marcados a continuación (Traer al frente / Enviar al reverso);
Esto le dará la posibilidad de reorganizar los controles para su orden deseada.
Como dijiste, el control más nuevo agregado a la colección de controles es el que está en la parte superior. Si necesita agregar un control más nuevo en la parte inferior, le sugiero que cree una lista de controles, agregue los controles a la lista, invierta la lista y agregue la lista a la colección de controles.
List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
El orden en que se agregan los controles a la colección Controls determina la orden de acoplamiento.
Un control tiene dos métodos para lograr lo que está buscando: BringToFront
y SendToBack
.
Usa estos métodos:
myControl.SendToBack();
myControl.BringToFront();
Use FlowLayoutPanel, que hace exactamente lo que desea.
Vaya a Ver -> Otras ventanas -> esquema del documento.
En esa ventana, arrastre los controles para que el acoplamiento sea como desee.