Cómo Crear un Cronómetro

En esta oportunidad quisiera mostrarles cómo crear un cronómetro en visual basic .net utilizando el componente timer.

Bueno, no pretendo que este sea un ejemplo paso a paso mostrando cada una de las propiedades modificadas de cada control, muy por el contrario, me quiero concentrar en la funcionalidad del cronómetro y les dejaré el diseño a ustedes. Simplemente les mostraré el que hice yo.

Los controles a utilizar son: un formulario, tres botones y dos etiquetas. Tambien necesitaremos agregar al formulario un componente Timer. Se vería mas o mes así:

bien, lo primero que haremos será definir cuatro variables privadas a nivel del formulario.

Private hora As Integer = 0
Private minuto As Integer = 0
Private segundo As Integer = 0
Private milisegundo As Integer = 0

El componente Timer debe tener su propiedad interval en 100.

Crearemos una función para mostrar en el label1 el paso del tiempo:

    Sub mostrarTiempo()
        Label1.Text = hora.ToString.PadLeft(2, "0") & ":"
        Label1.Text &= minuto.ToString.PadLeft(2, "0") & ":"
        Label1.Text &= segundo.ToString.PadLeft(2, "0") & ":"
        Label1.Text &= milisegundo.ToString.PadLeft(1, "0")

        Label1.Refresh()
    End Sub

En el evento tick del componente Timer es donde se desarrolla toda la lógica del cronómetro. Copia el siguiente código allí:

milisegundo += 1
If milisegundo = 9 Then
    milisegundo = 0
    segundo += 1
    If segundo = 59 Then
        segundo = 0
        minuto += 1
        If minuto = 59 Then
            minuto = 0
            hora += 1
        End If
    End If
End If
mostrarTiempo()

Bueno, solo resta el código de los tres botones. El botón iniciar activa el timer:

Timer1.Enabled = True

El botón Pausa detiene el timer:

Timer1.Enabled = False

Y el botón volver a cero resetea los valores de las variables:

hora = 0
minuto = 0
segundo = 0
milisegundo = 0

mostrarTiempo()

Espero que este ejemplo no les resulte complicado y por sobre todo que les sea util. Por último les dejo una captura del cronómetro en funcionamiento:



38 Responses to “Cómo Crear un Cronómetro”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: En esta oportunidad quisiera mostrarles cómo crear un cronómetro en visual basic .net utilizando el componente timer. Bueno, no pretendo que este sea un ejemplo paso a paso mostrando cada una de las propiedades modificadas de…

  2. Edith Bautista dice:

    Muchas gracias me fue muy util apenas comienzo con .net y muy bien descrito .

    Adios.

  3. junior mezaq dice:

    estan muy buenos los ejemplos…y gracias por aportar los conocimientos qya tiens para los q recien empezamos…

  4. Ene dice:

    Hola!!!
    px muchas gracias fue de muchisima ayuda tu codigo me sirvio es mas me salvo la vida jajaja…
    no muy trabajo gracias…
    chao bye kuidate…

  5. Adyir dice:

    Muchas gracias man… sin complicaciones este ejemplos, muy muy bueno, que dios te ayude a ti igual…

  6. bacotich dice:

    Muy buen Aporte te felicito sigue asi !!!

  7. galvis dice:

    muchas gracias me ha servido mucho

  8. Fernando dice:

    El cronometro esta bien solo que no cuenta el tiempo 00:01:59:0 el segundo 59 no lo cuenta del 58 salta a 00 y el 59 que no existe, checa tu codigo por favor

  9. Fernando dice:

    La solucion seria asi
    Milisegundo += 1
    If Milisegundo = 10 Then
    Milisegundo = 0
    Segundo += 1
    If Segundo = 60 Then
    Segundo = 0
    Minuto += 1
    If Minuto = 60 Then
    Minuto = 0
    Hora += 1
    End If
    End If
    End If
    MostrarTiempo()
    De esta manera el segundo o minuto 59 existiria pero se agradece el aporte.

  10. elflaco dice:

    Muy bueno, muchas gracias!!!! me salió a mi que soy duranga

  11. Darwin dice:

    GRACIAS!!! por el ejemplo me desperto la logica xq realice un mega proyecto evaluando este ejemplo espero sigan suviendo ejemplo de esta magnitud Dios los bendiga

  12. Darwin dice:

    Soy nuevo programando haci realice mi proyecto.

    Public Class Form1
    Private hora As Integer = 0
    Private minuto As Integer = 0
    Private segundo As Integer = 0
    Private milisegundo As Integer = 0
    Sub mostrarTiempo()

    Label1.Text = hora.ToString.PadLeft(2, “0″) & “:”

    Label1.Text &= minuto.ToString.PadLeft(2, “0″) & “:”

    Label1.Text &= segundo.ToString.PadLeft(2, “0″) & “:”

    Label1.Text &= milisegundo.ToString.PadLeft(1, “0″)

    Label1.Refresh()
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    milisegundo += 1
    If milisegundo = 9 Then

    milisegundo = 0
    segundo += 1

    If segundo = 59 Then

    segundo = 0

    minuto += 1

    If minuto = 59 Then

    minuto = 0

    hora += 1

    End If

    End If
    End If
    mostrarTiempo()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Timer1.Enabled = True
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Timer1.Enabled = False
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    End
    End Sub

  13. Jaime dice:

    Muchas Gracias por el aporte

  14. CARRARO dice:

    Buen código !!

  15. JonPrince dice:

    Buen codigo….me sirvio a la perfeccion corregido el error ya mencionado….gracias

  16. CRIS dice:

    gracias por tu aporte me sirvio de mucha ayuda

  17. riper dice:

    Hola amigo quisioera saber donde haces tu blog ???es decir esta pagina ¡?
    me podrias ayudar :D

  18. romina dice:

    esta genial me quedo magnifico gracias a tu tutorial aora ya tengo una idea de como usar el timer.

  19. M1m! dice:

    grax x el codigo
    zi me zirvio!!
    ^○^

  20. david dice:

    gracias con ese codigo estoy programando algo mas grande jejej
    gracias…

  21. Wolverine dice:

    excelente Codigo muy Util sobre todo para desarrollar alguna aplicacion que controle tiempos de espera de un proceso

    Gracias mil

  22. loquillo dice:

    y si quisiera en cuenta regresiva como seria?

  23. aldrin dice:

    Un ejemplo muy bueno lo habia echo en c++ con mi profresor de programacion pero no tenia idea como era en visual basic.net gracias por el aporte un ejemplo muy sencillo y a la vez muy atractivo.Gracias

  24. juan dice:

    muy bueno solo una cosa, en el boton de reset si lo presionas se pone en 0 pero sigue corriendo el tiempo para eso solo tendrias que poner

    Private Sub btn_reset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_reset.Click
    Timer1.Enabled = False
    hora = 0
    minuto = 0
    segundo = 0
    milisegundo = 0
    mostrarTiempo()
    End Sub

  25. andres dice:

    Hola gracia por el aporte

    Quisiera saber como adaptarlo a ASP con VB ya que al utilizar el codigo la pagina queda realizando postback

    Gracias

  26. alfras dice:

    muchisimas gracias, lo andaba buscando

  27. MHESSHY dice:

    MUY BUENA INFORMACION ME SALVASTE DE UN APURO
    ..
    ..
    GRACIAS

  28. gatiaz dice:

    Muchas gracias por los aportes. Son muy claros y muy buenos.

  29. Elio Amhed dice:

    Muy buen aporte, es lo que estaba buscando!!
    gracias

  30. danilo dice:

    Me podrias decir como hiciste con el label1.refresh()
    Gracias.

  31. ali dice:

    esta buenazo la prog. y el diseño es sencillo.. !!

  32. andres felipe gomez calderon dice:

    muy buen ejemplo me ha servido para algunos proyectos, pero ahora no se como hacer un cronometro para llevar el tiempo de una prueba, por ejemplo:

    necesito hacer 10 formularios y poner a restar 20 minutos que tiene de duración la prueba, pero cuando cambio del primer formulario al segundo se reinicia el timer. espero su ayuda y nuevamente gracias por esta gran pagina de ayuda.

  33. Jim dice:

    Disculpe, como seria un cronometro en modo console en visual .net?…Gracias!

  34. José Solórzano dice:

    Excelente.. Simple y funcional.

  35. gregory dice:

    como puede controlar los minutos deun timer

  36. C0D3 dice:

    Este codigo es para multiples cronometros a la ves
    Dim hor1 As Integer = 0
    Dim min1 As Integer = 0
    Dim segun1 As Integer = 0
    Dim hor2 As Integer = 0
    Dim min2 As Integer = 0
    Dim segun2 As Integer = 0

    Sub mostrarTiempo(Lab, H, M, S)
    Lab.Text = H.ToString.PadLeft(2, “0″) & “:”
    Lab.Text &= M.ToString.PadLeft(2, “0″) & “:”
    Lab.Text &= S.ToString.PadLeft(2, “0″)

    Lab.Refresh()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

    segun1 += 1
    If segun1 = 60 Then
    min1 += 1
    segun1 = 0

    If segun1 = 60 Then
    hor1 += 1
    min1 = 0
    End If
    End If
    mostrarTiempo(La_Hor_Base1, hor1, min1, segun1)
    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick

    segun2 += 1
    If segun2 = 60 Then
    min2 += 1
    segun2 = 0

    If segun2 = 60 Then
    hor2 += 1
    min2 = 0
    End If
    End If
    mostrarTiempo(La_Hor_Base2, hor2, min2, segun2)
    End Sub

Comentar