Cómo controlar el orden de acoplamiento en WinForms


80

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->SendToFrontestá 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ñadorSendToBacky lasSendToFrontcaracterísticas de WinForms


Gracias; Necesitaba controlar programáticamente el acoplamiento y ni siquiera me di cuenta de que su orden controlaba cómo se acoplaban.
Eagle-Eye

Respuestas:


79

Utilice estos métodos:

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

2
Estaba buscando a control.SendToFront()Ver, ahora eso era fácil. ¡Gracias!
Caesay

10
@Tommy: ¿Sueles programar desde detrás de la computadora? :)
Ashley Tate

6
En la ventana del diseño, haga clic derecho. seleccione sendToBack y haga clic derecho de nuevo: BringToFont
Grey Wolf

Este método también se aplica a agregar controles de acoplamiento en el diseñador de formularios. Con el menú contextual, puede enviar hacia atrás, luego traer al frente y luego acoplar y será el último control en la "cadena" de acoplamiento.
Anders Lindén

142

Vaya a Ver → Otras ventanas → esquema del documento.

En esa ventana, arrastre los controles para que el acoplamiento sea el que desee.


Me preguntaba qué palabras podría usar para describir esa ventana exacta, llegar allí eventualmente en Google, ¡Gracias!
Cooperativas

12
Creo que esta debería ser la respuesta
Xinchao

1
Esto no funciona si los controles se agregan dinámicamente.
Wayne

Resuelva mi problema fácilmente en el momento del diseño.
Hao Nguyen

1
8 años después ... la mejor respuesta
soulshined

12

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());

6

Un control tiene dos métodos para lograr lo que está buscando: BringToFronty SendToBack.


4

El orden en el que se agregan los controles a la colección Controls determina el orden de acoplamiento.


Necesito editar el orden de acoplamiento después de que se agreguen los controles a la colección
caesay

2
Entonces ve por el ControlCollection.SetChildIndex(control, index)método.
Oliver Hanappi

@Oliver Hanappi: ¿Es posible hacer esto en el diseñador? ¿Sin código?
user2366975

Debería poder reordenar los controles en la ventana Esquema del documento ( blogs.msdn.com/b/zainnab/archive/2010/11/30/… )
Oliver Hanappi

3

(Por el simple hecho de mostrar otra opción): En Visual Studio 2012 (y posterior):

  1. Seleccione el control que desea mover al frente (o atrás);
  2. Haga clic en los botones marcados a continuación (Traer al frente / Enviar al fondo); ingrese la descripción de la imagen aquí

Esto le dará la posibilidad de reorganizar los controles en el orden deseado.


2

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

-3

Utilice el FlowLayoutPanel que hace exactamente lo que quiere.


1
Esta publicación no responde a la pregunta, y esta pregunta tiene 6 años y ya tiene respuestas relevantes.
Caesay
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.