Rellotge Digital (Timer)

Vull mostrar avui una forma simple i senzilla de crear en visual basic. Net un rellotge digital. Ho farem utilitzant un label i un component Timer.

El formulari hauria de tenir una aparença similar a la de la següent imatge>

Per a aquest exemple on només mostrarem l'hora, canviarem la font del control label per donar-li més importància. Jo estic fent servir font Tahoma mida 28.

Ara vegem les propietats del component timer. Perquè s'executi el codi de l'esdeveniment Tick del component timer, aquest ha de tenir la propietat enable a True. I el codi que ingressem s'arrenca cada n ticks. La quantitat de ticks de n es les indiquem amb la propietat interval en mil · lisegon. Per tant si col · loquem aquesta propietat en 1000 ticks, el codi s'executarà cada 1 segon.

Ara vegem el codi, és molt senzill:

 Private Sub Timer1_Tick (ByVal sender As System.Object, _
 ByVal i As System.EventArgs) Handles Timer1.Tick
 Label1.Text = Date.Now.ToLongTimeString
 End Sub

Només resta executar (F5) l'aplicació i tindrem el nostre rellotge digital com es mostra en la següent imatge>

Si ets assidu lector d'aquest bloc, sabràs que tot el codi dels exemples sempre pretén ser molt senzill i que tu tens a partir d'aquests exemples la possibilitat de millorar, complementar i adaptar-los per usar-los en les teves aplicacions.

Com sempre, espero que et sigui útil.

33 Responses to "Rellotge Digital (Timer)"

  1. Informació Bitacoras.com ...

    Valora en Bitacoras.com: Vull mostrar avui una forma simple i senzilla de crear en visual basic. Net un rellotge digital. Ho farem utilitzant un label i un component Timer. El formulari hauria de tenir una aparença similar a la de la i ....

  2. fastmonro diu:

    el timer no cal, una forma mes senzilla:
    Private Sub Form1_Load (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles MyBase.Load

    Me.Label1.Text = Format (Now, "hh: mm: ss tt")
    End Sub

    • Eliseu diu:

      fastmonro:

      gràcies per l'aportació, però l'únic que fas amb això és "mostrar" en una etiqueta l'hora en què es va carregar el formulari (ja que el crides des del esdeveniment Load). Permet-me dir-te que per aconseguir la funcionalitat d'un rellotge, és a dir, que mostri l'hora actual "tot el temps" és necessari el component Time r, sinó no seria un rellotge ... sol mostraries l'hora d'un moment determinat.

  3. Alex diu:

    Molt bo la seva aportació! Felicitats!

  4. Laharl diu:

    excel · lent aportació germà però l'únic problema que li trobo és que no carrega al mateix temps que l'executa un cal esperar cert temps perquè mostri el rellotge només cal posar el mateix en l'esdeveniment load del form jo ho vaig fer en C # perquè és el que més puc utilitzar
    private void timer1_Tick (object sender, EventArgs e)
    {
    label.Text = DateTime.Now.ToShortTimeString ();
    }

    private void Form1_Load (object sender, EventArgs e)
    {
    label.Text = DateTime.Now.ToShortTimeString ();
    }
    i una cosa mes algú sap com mostrar el nom del fitxer desat o obert a la barra de títol i intentat de diverses maneres i no trobo com fer-ho no importa si és en VB o C #.

    salu2

    • batero_loco_xxx diu:

      tens raó però és per què etienes d'esperar un segon que és quan s'executa el codi tic del rellotge (recorda és cada 1 segon és a dir un segon després del load) et dic un truc molt més senzill per qu eno et facis boles, posa el mateix codi que poses en el tic del rellotge en el form load del teu formulari així:

      private sub form1_load ....

      Me.Label12.Text = Format (Now, "hh: mm: ss tt")
      end sub

      i s'acabo teu dilema

      Salutacions

  5. juan diu:

    Eliseo .... que bé gràcies per ajudar-nos amb aquests codis senzills i la bona explicació a nosaltres els que tot just comencem amb el de programar ....... tenes raó amb el timer és molt necessari perquè es actualitzi ..

    Gràcies.

  6. hola diu:

    Bona aportació!

  7. Henoch diu:

    Bona em gust la solució

  8. Danilo diu:

    amics no miro el codi per al tick del timer?? ayudenme si us plau

  9. Neobones diu:

    Hola, jo utilitzeu el Timer i com diu a dalt, en la propietat Enable té q anar en True, i el intervale = 1000 .... ara ... fan dues vegades sobre l'objecte Timer1 i els portés a l'esdeveniment Tick ... dins posen el codi alguna cosa així ...

    Public Class frmPrincipal
    Private Sub Tiempo_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Tiempo.Tick
    txtHora.Text = Format (Now, "hh: mm: ss tt")
    txtFecha.Text = Date.Now.Date
    End Sub
    End Class

    en el meu cas io li canvieu el nom de l'objecte, en comptes de Timer1 li vaig posar Temps ...
    espero q els ajudi als nous programadors.

  10. AlvaroPucela diu:

    Neobones teva funció és collonuda! va de puta mare.

  11. Guia de carrers diu:

    Bones amics, he intentat diverses vegades com em diuen però en córrer el programa el rellotge no es va actualitzant cada segon, que he de fer perquè en correguda es vagi actualitzant, ia la propietat de interval la col · loqui en 1000, però no s'actualitza .
    espero em pugui ajudar.
    salutacions.

    • batero_loco_xxx diu:

      encara que no ho esmentes suposo que per lògica hauras escrit el codi per a l'esdeveniment tic del rellotge? que és aquest

      Private Sub Timer1_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Timer1.Tick
      Label12.Text = Format (Now, "hh: mm: ss tt")
      End Sub

  12. Fredy diu:

    Cises TA BN EL CODI I Yop PENES TOY APRENENT I NA .. VOLDRIA SABER COM ASERLE per crear un CRONÒMETRE cises ...

  13. miguelito diu:

    aquí hi ha alguna cosa una mica més elaborat
    Public Class Form1
    Dim comptador As Integer
    Private Sub Form1_Load (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles MyBase.Load
    Me.Text = "indicador del temps"
    Me.Label1.BorderStyle = BorderStyle.FixedSingle
    Me.Label1.TextAlign = ContentAlignment.MiddleCenter
    Me.Label1.Text = ""
    Me.Label1.BackColor = Color.Black
    Me.Label1.ForeColor = Color.Red
    Me.Label1.Visible = False
    Me.Timer1.Interval = 1000
    Me.Timer1.Enabled = True
    BackColor = Color.White
    End Sub
    Private Sub horaToolStripMenuitem_click (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles HoraToolStripMenuItem.Click
    comptador = 1
    End Sub
    Private Sub fechaToolStripMenuItem_click (ByVal sende As System.Object, ByVal i As System.EventArgs) Handles FechaToolStripMenuItem.Click
    comptador = 2
    End Sub
    Private Sub Timer1_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Timer1.Tick
    Me.Label1.Visible = True
    If comptador = 1 Then Label1.Text = TimeString
    If comptador = 2 Then Label1.Text = My.Computer.Clock.LocalTime.Date.ToString
    End Sub
    End Class

  14. victor cordova diu:

    Gràcies per l'aportació, funciona a la perfecció : D m'estava donant moltes voltes amb això i amb aquestes poques línies es solucione ... THANKS AGAIN!

  15. gustavo diu:

    desearia que em enviïs més exercicis amb timer en especial com fer que un elevador es mogui al pis desitjat

    gràcies.

  16. Angelo diu:

    El rellotge funciona correcte com aquesta en l'exemple, simplement en iniciar el formulari cal posar Timer.Start ()

    Salutacions.

  17. kadaj diu:

    si funka això del timer però mira el teu task manager perquè vegis com es mou de recursos (depenent de processador ram etc ..) alguna altra forma d'optimitzar? algun me.refresh?

  18. machine diu:

    chido hijes em trec d'una dificultat

    tinc un dubte de com ago un tall de caixa amb els toteles de les vendes dond el camp de la base de dades en access
    és monto_venta
    se't s'agraeix si tens algun exemple

  19. Lyn diu:

    hola sóc estudiant d'enginyeria en sistemes estic fent un sistema per la meva pràctica són excel · lents les seves aportacions probe 2 exemples de dalt xq la veritat això c suposa és bàsic però en aquests casos a qualsevol c li apaga el cpu. jeje

    Private Sub Form1_Load (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles MyBase.Load

    Me.Label1.Text = Format (Now, "hh: mm: ss tt")
    End Sub

    només em dóna una determinada hora no l'actualitza

    i

    Private Sub Timer1_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Timer1.Tick

    LHora.Text = Date.Now.ToLongTimeString

    End Sub

    aquest si la propietat de timer ha d'estar en true ciertisimo i un interval de 1000 i això és tot funciona a la perfecció

  20. Joan diu:

    Hola, com es fa el rellotge en comptes d'en un web form en un lloc web, no aconsegueixo veure-ho, l'esdeveniment timer.start posa que no existeix.

    • Eliseu diu:

      el problema és que els esdeveniments dels controls s'executen del costat del servidor, i perquè això passi has de fer un Reques, la qual cosa torna a carregar tota la pàgina ... en realitat ho has de fer del costat del client.

      Prova amb java (javascript), amb ajax o jQuery.

      Sort

  21. pedrox diu:

    grasias per tot però necessito que m'ajudin
    necessito fer tot això però en c # jo sóc nou programdo si algú sap siusplau ayudenme.

  22. AloneBoy diu:

    Hola Jo també sóc nou programant i volia saber si algú sap com fer q un formulari a l'hora q li dones clic es faci transparent així com les finestres en el linux Opensuse 3/11

  23. Lorena diu:

    Imports ClassLibrary1
    Public Class Form1
    Private Sub Form1_Load (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles MyBase.Load
    Time.Start ()
    End Sub
    Private Sub Time_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Time.Tick
    Dim hores As New class1
    Label.Text = horas.hora ()
    'Hora ()
    End Sub
    'Private Sub hora ()
    'Label.Text = Now
    '' MessageBox.Show ("Col · locar l'hora")
    'End Sub
    End Class

  24. MIAUUU diu:

    PASSABA PER AQUI BUSCANT ESE CODI ... SOL AGAFAMENT EL CODIGO DEL TIMER ... I AMB UNS ARRANJAMENTS ME FUNCIONO A LA PERFECCIÓ ... GRÀCIES Miguelito ...

  25. Oum diu:

    Gràcies pels codis anteriors em van servir per poder adaptar-lo al meu.
    El codi que a mi em funcinó per obtenir l'hora, la qual canviés conforme el sistema operatiu ho fes ..
    Private Sub Form1_Load (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles MyBase.Load

    lblHora.Text = Date.Now.ToLongTimeString
    Timer1.Start ()

    End Sub

    Private Sub Timer1_Tick (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Timer1.Tick
    lblHora.Text = Date.Now.ToLongTimeString
    End Sub

  26. Juanma! Diu:

    ja prengui diversos exemples de arribaa i cap em funcionaa! crec que sóc molt dolent per a això: S necessito fer un rellotge però ke a la pantalla es vegi com van passant els segons oseaa alguna cosa així! 00:00:00 ayudenmeee DD:

  27. Jdiaz diu:

    Hola a tots, doncs jo he estat investigant sobre els timer i segons he vist he de utilitzar-los per fer el control d'un elevador fins ara mateix només porto la interfície amb els nivells de l'1 al 10 i fer el recorregut però després torna a començar des 1 al 10 no com hauria de ser i encara no he trobat la manera de que funcioni mitjançant els botons, no se si algú li ha tocat treballar en alguna cosa així que em pugui ajudar o si més no explicar, per endavant gràcies.

  28. kathy diu:

    com faig per que amb el timer quan s'executa em mostra una paraula en un ListBox

  29. javier diu:

    com puc cridar l'ajuda de windows en vb.net 2005

Comentar