Como dice el título, estoy buscando una forma de controlar el orden en que los elementos 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 RightClick->Order->SendToFront
está haciendo, porque eso es exactamente lo que quiero que suceda. Hasta donde puedo suceder, a medida que agrego mi contenido a mi control, el contenido más nuevo siempre está en la parte superior, y me gustaría que el contenido más nuevo esté en la parte inferior y el contenido más antiguo esté en la parte superior. parte superior.
Resumen: ¿Existe una manera fácil en WinForms (C #) de 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 mientras agrego mis controles, no puedo usar ninguna característica del diseñador de WinForm, pero lo que estoy tratando de hacer es imitar el DiseñadorSendToBack
y lasSendToFront
características de WinForms
Respuestas:
Utilice estos métodos:
fuente
control.SendToFront()
Ver, ahora eso era fácil. ¡Gracias!Vaya a Ver → Otras ventanas → esquema del documento.
En esa ventana, arrastre los controles para que el acoplamiento sea el que desee.
fuente
Como dijiste, el control más nuevo agregado a la colección de controles es el que está en la parte superior. Si necesita que se agregue un control más nuevo en la parte inferior, le sugeriré crear una lista de controles, agregar los controles a la lista, invertir la lista y agregar 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());
fuente
Un control tiene dos métodos para lograr lo que está buscando:
BringToFront
ySendToBack
.fuente
El orden en el que se agregan los controles a la colección Controls determina el orden de acoplamiento.
fuente
ControlCollection.SetChildIndex(control, index)
método.(Por el simple hecho de mostrar otra opción): En Visual Studio 2012 (y posterior):
Esto le dará la posibilidad de reorganizar los controles en el orden deseado.
fuente
Tenga en cuenta que al hacer esto de manera programática, existe una manera muy fácil de lograrlo, a saber:
containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
fuente
Utilice el FlowLayoutPanel que hace exactamente lo que quiere.
fuente