开发者

Create a simple timer to count seconds, minutes and hours

开发者 https://www.devze.com 2023-01-21 05:46 出处:网络
I\'m trying to create a pretty simple program that basically is a timer. I have three sets of labels, lbl_seconds, lbl_minutes and lbl_hours.

I'm trying to create a pretty simple program that basically is a timer. I have three sets of labels, lbl_seconds, lbl_minutes and lbl_hours. These labels have the default value of 00:00 and I want the timer to change that for each label. I have googled this but I cannot seem to find any good info on it.

Do I need three separate timers? I have also noticed that the timers have their own tick event handler. I guess it's in this tha开发者_如何学JAVAt I need to change the value of the label. How to do just that?


Here is an example of this

Dim timercount As Integer = 60 'The number of seconds 
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
    Timer1.Interval = 1000 'The number of miliseconds in a second
    Timer1.Enabled = True 'Start the timer
End Sub

Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click
    Timer1.Enabled = False 'Stop the timer
    timercount = 60 'Reset to 60 seconds
    lblOutput.Text = timercount.ToString() 'Reset the output display to 60
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    lblOutput.Text = timercount.ToString() 'show the countdown in the label
    If timercount = 0 Then 'Check to see if it has reached 0, if yes then stop timer and display done
        Timer1.Enabled = False
        lblOutput.Text = "Done"
    Else 'If timercount is higher then 0 then subtract one from it
        timercount -= 1
    End If
End Sub


I think you need something of this sort

Public Function GetTime(Time as Integer) As String
    Dim Hrs        As Integer  'number of hours   '
    Dim Min        As Integer  'number of Minutes '
    Dim Sec        As Integer  'number of Sec     '

    'Seconds'
    Sec = Time Mod 60

    'Minutes'
    Min = ((Time - Sec) / 60) Mod 60

    'Hours'
    Hrs = ((Time - (Sec + (Min * 60))) / 3600) Mod 60

    Return Format(Hrs, "00") & ":" & Format(Min, "00") & ":" & Format(Sec, "00")
End Function

You pass the time (in seconds) you'd like to display on the label's text and the time will be formatted as you like it.

e.g.

lblTime.Text = GetTime(90)

This will display 00:01:30 on the label.


For reference, you can see this project I submitted on FreeVBCode some time ago. The only caveat is the project is in VB6. You should be able to open it in Visual Studio though.


Start off by adding a timer. Call it whatever you like, in this example I will be keeping it as Timer1. Add a label and set the text as: 00:00.

In the code after the class has been set (usually it is Public Class Form1) make a variable as a stopwatch: Dim stopwatch As New Stopwatch

In the timer tick event code, put the following: (Please note that my 00:00 label is called Label1)

Label1.Text = String.Format("{0}:{1}:{2}", watch.Elapsed.Hours.ToString("00"), watch.Elapsed.Minutes.ToString("00"), watch.Elapsed.Seconds.ToString("00"))


Use one timer and in event sub change value of your labels.

You need one timer and three counter for seconds, minutes and hours.

Count minutes, then modulo minutes / 60, if return 0 then start count minutes.
Modulo minutes/60, if return 0 then start count hours.

0

精彩评论

暂无评论...
验证码 换一张
取 消