Está en la página 1de 3

Como construir controles personalizados

Construyendo un temporizador de cuentaregresiva

Lo primero que se debe realizar es un plan del proyecto, es decir las caracteristicas y
procedimientos en este caso del temporizador.

 Debe ser visible y colocable en un formulario; teniendo propiedades basicas


como Color de fondo (BackColor), Anchor, etc.
 Debe ser capaz de recepcionar un numero, el cual sera desde el que comenzará
la cuenta regresiva.
 Debe tener un metodo Iniciar() y otro Detener(), para empezar y Detener la
cuenta respectivamente.
 Debe activarse un evento del control cuando la cuenta finalice (llegue a 0).

Una vez hecho todo esto procedemos a crear el control.

 Abrimos Visual Studio .NET y creamos un nuevo proyecto de biblioteca de


control de Windows (llame a este proyecto CuentaRegresiva).
 Visual Studio creará una estructura basica de su control. Se le mostrara un
UserControl, el cual le servira para modelar el control deseado. Fig1

Fig 1.

 En este control colocaremos un Label.


 Cambiamos la propiedad Anchor de este control tal que quede asi:

Esto asegura que cuando el tamaño del control cambie, la etiqueta tambien.
 Ahora Agregamos un control Timer, el cual permite controlar un segundo cada
vez hasta que crea que el tiempo se ha agotado. El aspecto externo de este
control ya esta completo, ahora solo debemos agregar el codigo que apoye a este
control.
 Ahora en el codigo declaramos globalmente lo siguiente:
 public int cuenta_segundos;
 La variable cuenta_segundos necesita estar expuesta al contenedor de controles
(para obtener el numero base para la cuenta), por eso es declarada como publica.
 El evento Tick del objeto Timer debe restar un segundo del número total de
segundos. Luego comprobar si se ha llegado al final de la cuenta, y si es asi
llamar a Stop().
 Para conseguir que evento Tick actue según lo explicado haremos lo siguiente:
 Seleccionar el control Timer.
 Click derecho propiedades.
 Luego haga clic en boton Eventos(representado por un rayo).
 Doble click en el evento Tick, y colocamos el siguiente codigo:
private void timer1_Tick(object sender, EventArgs e)
{
cuenta_segundos -= 1;
if (cuenta_segundos <= 0)
{
timer1.Stop();
label1.Text = "0";
}
else
label1.Text = cuenta_segundos.ToString();
}
 Ahora necesitamos un metodo publico que nos permita iniciar el control, para
que empiece a contar segundos.
 En el explorador de soluciones hacemos click en Vista de Clases y hacemos lo
siguiente:
 Expandimos la Vista de Clases.
 Haga click derecho, Agregar, Agregar Método.
 Llame a este método Inciar. Y escriba en siguiente
codigo:
public void Iniciar()
{
timer1.Interval = 1000;
timer1.Start();
label1.Text = cuenta_segundos.ToString();
}
 Igualmente creamos otro método que llamaremos Detener,
el cual detendra el conteo, pero si lo iniciamos nuevamente
lo hara desde donde se quedó.
 Escribimos el siguiente codigo en el método Detener.
public void Detener()
{
timer1.Stop();
cuenta_segundos = this.Segundos;
}
 Se habran dado cuenta que la propiedad Segundos no aparece, pues es por que
aun no la hemos creado, cremosla.
 Click derecho en la Vista de Clases, Agregar, Agregar Propiedad, le colocamos
el nombre Segundos y luego le copiamos en el codigo siguinete:
public int Segundos()
{
get{return cuenta_segundos;}
set{cuenta_segundos = value;}
}
 Hacer lo mismo para otra propiedad que se llamara Text y que devolverá el valor
del texto de Label.
 Haga click en Generar y su control estara creado.
 Para usarlo solo debe crear un Nuevo Proyecto y Agregar el control creado a la
barra de Herramientas haciendo click derecho en esta y eligiendo Personalizar
cuadro de Herramientas.
 Elijan la Ficha de .NET Framework, haga click en Examinar… busque y elija
su control.
 Se proporcionaráel ejemplo de este ejemplo.
 Cualquier pregunta solo escribala en los comentarios de la pagina.
 El control quedará asi:

 Y en su aplicación se verá así:

También podría gustarte