2010-04-09 14 views
60

Como dice el título, estoy buscando una manera de controlar el orden en que los artículos se conectan a la parte superior de mi control.Cómo controlar el orden de atraque en WinForms

He jugado con el diseñador de formularios de Windows, y no puedo encontrar lo que el RightClick->Order->SendToFront está haciendo, 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: ¿Hay alguna manera fácil en WinForms (C#) para controlar el orden en que las cosas se acoplan a los lados de los controles?

Editar: que tengo que hacer esto desde el código subyacente al agregar mi controles, no puedo usar cualquier característica del diseñador del WinForm, pero lo que estoy tratando de hacer, es imitar el Diseñador de Windows Forms SendToBack y SendToFront características

+0

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

Respuesta

56

utilizar estos métodos:

myControl.SendToBack(); 
myControl.BringToFront(); 
+1

Estaba buscando 'control.SendToFront()' Ver, ahora que fue fácil. ¡Gracias! – caesay

+8

@Tommy: ¿Normalmente programa desde detrás de su computadora? :) –

+2

En la ventana del diseño, haga clic derecho. seleccione sendToBack y haga clic con el botón secundario nuevamente: BringToFont –

4

Un control tiene dos métodos para lograr lo que busca: BringToFront y SendToBack.

112

Ir a Ver -> Otras ventanas -> esquema del documento.

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

+0

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

+0

+1 resolvió mi problema –

+0

+1 en caso de organizar múltiples controles –

3

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

+0

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

+2

Luego vaya por el método 'ControlCollection.SetChildIndex (control, índice)'. –

+0

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

10

Como usted ha dicho, el control más reciente añadido a la colección de controles es el de arriba. 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()); 
+0

+1 for .Reverse – hawbsl

-3

Utilice el FlowLayoutPanel hace exactamente lo que desea.

+0

Esta publicación no responde la pregunta, y esta pregunta tiene 6 años de antigüedad y ya tiene respuestas relevantes. – caesay

2

(Para el asunto en aras de mostrar otra opción): En Visual Studio 2012 (y posteriores):

  1. Seleccione el control que desea mover hacia delante (o hacia atrás);
  2. Haga clic en los botones marcados a continuación (Llevar al frente/Enviar al dorso); enter image description here

Esto le dará la posibilidad de reorganizar los controles a su fin deseado.

Cuestiones relacionadas