2011-10-07 31 views
5

Uso panel.controls.add para agregar controles al panel. Pero ... se insertan en la parte superior.Cómo insertar los mejores controles acoplados debajo de los controles acoplados superiores previewsly en un panel

Probé los métodos BringToFront y SendToBack, pero parece que no funciona.

¿Alguna idea? Gracias

EDIT:

lo que quiero, es que atracan en la parte superior del contenedor, pero si hay otro control atracado allí, el nuevo se muestran a continuación que uno ...

+1

El título de su pregunta me confunde un tanto. O desea que estén anclados en la parte superior o inferior del contenedor de control, ¿cuál es? Use la propiedad 'Dock' en cualquier caso –

+0

¡Muéstranos tu código! – Stormenet

+0

Insertar en la parte superior significa? ¿Quieres nuevos controles en la parte inferior? – Anuraj

Respuesta

13

El orden de acoplamiento se basa en el índice del control en la colección de controles. El último va en la parte superior. Por eso su control agregado va por encima y empuja hacia abajo un control acoplado existente. Use el método SetChildIndex() para mover el control al índice 0:

 var btn = new Button(); 
     btn.Dock = DockStyle.Top; 
     panel1.Controls.Add(btn); 
     panel1.Controls.SetChildIndex(btn, 0); 
+0

Esto es lo que funcionó para mí ... gracias hans. .. – saggio09

1

"lo que quiero es que se acoplen en la parte superior del contenedor, pero si hay otro control acoplado allí, el nuevo se muestra debajo de ese ..."

OK Entiendo. Veo dos soluciones:

  1. Uso Anchor propiedad (SET para Top) en lugar de Dock propiedad - a continuación, se colocan estos controles en el lado superior al lado del otro, sin embargo no se estirarán horizontalmente, no lo harán ocupe automáticamente todo el espacio horizontal disponible (aún puede controlar su Width programáticamente, por supuesto). Si esta limitación es un problema para usted, la opción 2 Proveedores:

  2. utilizar otro control contenedor - que podría ser un TableLayoutPanel - el muelle que en la parte superior del primer panel, y continuación poner los controles restantes en ese TableLayoutPanel . Use su colección Columns para proporcionar espacio para controles múltiples uno al lado del otro. (Incorporación de controles contenedores en otros controles de contenedor no es inusual y a menudo necesario en el diseño de diseños complejos.)

+0

¡Gracias por el gran consejo! No pude resolverlo y poner todos los 'GroupBoxes' en un gran' TableLayoutPanel 'donde pude administrar fácilmente el orden, el ancho y el alto. – DarkLite1

+0

@ DarkLite1 no hay problema - guau, esta respuesta ha esperado su primer voto a favor durante casi 5 años:) –

+0

Mejor tarde que nunca, me ha ahorrado mucho tiempo :) – DarkLite1

2

Tiene dos formas de hacerlo.

  1. Añadir los controles en el orden en que desea que se muestren en un panel, el banquillo de los controles en la parte inferior a medida que los crea.

    Example: 
    Panel.Controls.Add(Label1) 
    Panel.Controls.Add(Label2) 
    Panel.Controls.Add(Label3) 
    
  2. invertir el orden de los controles que se añade al panel, el banquillo de los controles en la parte superior durante su creación.

    Example 
    Panel.Controls.Add(Label3) 
    Panel.Controls.Add(Label2) 
    Panel.Controls.Add(Label1) 
    

Si esto no es lo que quiere, tendrá que invertir, ya sea del orden de lo que está siendo añadido (que no parece probable) o de acoplamiento (hasta vs abajo).

0

la reorganización de paneles de diseño en un formulario en tiempo de diseño:

Abra el formulario en la vista Diseño.Abra la ventana del esquema del documento - Vista | Otros Windows | Contorno del documento - (Ctrl + Alt + +).

El contorno del documento muestra los paneles de disposición en una vista de árbol en el orden inverso que se muestran en el formulario. Dentro de la ventana del esquema del documento, puede reorganizar el orden de los paneles. Debido al orden inverso, lo que se muestra en la parte superior en el contorno del documento estará en la parte inferior del formulario.

Cuestiones relacionadas