miércoles, 1 de febrero de 2012

Creación de Controles en tiempo de ejecución en .NET


Bueno con este pequeño ejemplo que voy realizar, que pretender ser una ayuda tanto para mí como para todo aquel que necesite crear algún control en tiempo de ejecución. Para este ejemplo he utilizado el entorno Visual Studio 2010.

 Lo primero será crear un pequeño formulario como este para realizar el ejemplo. Importante la parte que está por encima de los botones hay un panel donde se van a introducir los controles que en esta imagen no se ve.





Declararemos los vectores de los elementos que queramos crear  en mi caso yo he elegido del tipo botón.
private System.Windows.Forms.Button[] MyButton;

Y creamos las instancia.
MyButton = new System.Windows.Forms.Button[10];

Ahora crearemos las variables que nos servirán para ir recorriendo los índices del vector.
private int num_Butt;

Ya tenemos todo los necesario para empezar a crear elementos para ello iremos al evento Click() de nuestro botón añadir y agregamos el siguiente código.

MyButton[num_Butt] = new System.Windows.Forms.Button();
MyButton[num_Butt].Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
MyButton[num_Butt].Location = new System.Drawing.Point(x, y); MyButton[num_Butt].Name = "Boton" + num_Butt; MyButton[num_Butt].Size = new System.Drawing.Size(24, 452); 
MyButton[num_Butt].Visible = true;
MyButton[num_Butt].Text = "Boton" + (num_Butt +1); 
panel1.Controls.Add(MyButton[num_Butt]);  
num_Butt += 1;

Si te fijas en la tercera sentencia veras que esta parte se encarga de situar el control en el panel para ello usa los argumentos X y Y para mover el control por el panel.

Ahora solo falta determinar los eventos para poder mover el control por el panel para ello deberos modificar cada una de las cuatros opciones que tenemos como ejemplo vamos hacer el que movería el control a la derecha.

x += 10; 
         MyButton[num_Butt-1].Location = new Point(x, y);

Por último nos queda la acción para eliminar los controles. Aunque lo que realmente vamos a hacer es ocultarlos con  el siguiente código.
     
     MyButton[num_Butt - 1].Visible = false;
         num_Butt -= 1;


Aquí o dejo un video de la aplicación funcionando




No hay comentarios:

Publicar un comentario