Geeks With Blogs
Marcos.NET De la programación y otros cuentos
Dock es una propiedad de los controles que nos permite asociarlos a su contenedor de manera que su tamaño y posición se ajusten de acuerdo al control que los contiene; en C# se define a través de un enumerador con los elementos Top, Left, Right, Bottom y Fill.

Aplicar estas propiedades a los controles cuando se han añadido desde modo diseño es cosa de niños; sin embargo, cuando los controles se están creando dinámicamente en tiempo de ejecución la cosa se complica.. O al menos se complicó para mí, que tuve que implementarlo en una de las aplicaciones que desarrollamos y me encontré con que el docking no posicionaba los controles como se suponía que se hiciera.

Tras buscar un rato, me encontré con que, como los controles se van posicionando conforme se agregan a su contenedor, no se realizan las relaciones correctas y por ende el posicionamiento es incorrecto. Una solución sencilla (pero que funciona muy bien) resultó ser el aplicar el método SendToBack() o BringToFront() según sea el primer o segundo control en el eje Z.

Un ejercicio muy sencillo para reproducir ésto se muestra a continuación:

En esta primer imagen, el segundo control GroupBox queda detrás del primero, pues tiene el Dock = DockStyle.Fill, por lo que se ajusta a todo el tamaño de la forma contenedora.



En esta segunda imagen, al aplicar el método SendToBack() al primer GroupBox, se obtiene el posicionamiento deseado :)




private
void button1_Click(object sender, EventArgs e)
{
  GroupBox gb1 = new GroupBox();
  GroupBox gb2 = new GroupBox();
  this.Controls.Add(gb1);
  this.Controls.Add(gb2);
  gb1.Dock =
DockStyle.Top;
  gb1.Text =
"Uno";
  gb2.Dock =
DockStyle.Fill;
  gb2.Text =
"Dos";
  //gb1.SendToBack();
  gb2.BringToFront();
}

Algo medio raro, pero llega a necesitarse.. ;-)
Posted on Tuesday, May 19, 2009 9:26 PM | Back to top


Comments on this post: ¿Y mi Docking?

# re: ¿Y mi Docking?
Requesting Gravatar...
Excelente, me sirvio mucho. Gracias!!!
Left by marito4444 on May 09, 2011 8:41 AM

Your comment:
 (will show your gravatar)


Copyright © José Marcos García Espinosa | Powered by: GeeksWithBlogs.net