2010-10-21 121 views
0

我想創建一個非常簡單的程序,基本上是一個計時器。我有三組標籤,lbl_seconds,lbl_minuteslbl_hours。 這些標籤的默認值爲00:00,我希望計時器爲每個標籤更改該標籤。我已經搜索了這個,但我似乎無法找到任何好的信息。創建一個簡單的計時器來計算秒,分鐘和小時

我需要三個獨立的計時器嗎?我也注意到,定時器有自己的tick事件處理程序。我想這是我需要改變標籤的價值。如何做到這一點?

+0

所有三個標籤都有默認的00:00還是每個標籤初始化爲00?在我看來,你只需要一個計時器,然後你需要有3個全局計數器來跟蹤秒,分鐘和小時。 – jangeador 2010-10-21 07:19:33

+0

謝謝:)是的,每個標籤的默認值都是00:00,這使得解析字符串變得更加困難。可能是因爲:。現在,這可以分成兩個標籤嗎?秒和分鐘?而不是一個值爲00:00的標籤?你對全球計數器意味着什麼?不熟悉我的想法。 – 2010-10-21 07:35:52

+0

我不確定全局計數器是否正確,我的意思是說你不需要解析字符串,只需使用變量來跟蹤h,m和s,並在每個tick事件中增加這些變量。然後,您可以將標籤值更改爲每個變量的值。您可以使用String.Format以任何您希望的方式格式化變量。 – jangeador 2010-10-21 08:00:38

回答

2

我認爲你需要這種

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 

的東西,你打發時間(單位:秒)你想顯示在標籤的文本和時間將被格式化爲你喜歡它。

例如

lblTime.Text = GetTime(90) 

這將顯示在標籤上00:01:30


僅供參考,你可以看到this project前一段時間我在FreeVBCode提交。唯一需要注意的是該項目在VB6中。你應該可以在Visual Studio中打開它。

+0

這正是我所期待的。我設法混合了一些可行的代碼,但這很順利:) – 2010-10-21 18:13:43

+0

對不起,還有一個問題。此功能僅用於格式化?它實際上沒有任何計數?我只是想知道我應該在timer_Tick事件中放置什麼。以小時顯示標籤:分鐘:秒都很好。但我仍然希望它能夠使用tick事件進行實際計數。我也會看看你的項目,也許在那裏得到一些線索。編輯:我想我解決了它。我聲明一個全局變量爲整數,並將其設置爲form_load事件上的值0。然後在tick事件中,我將此值設置爲自己+1。似乎工作得很好:) – 2010-10-22 07:43:07

+0

正確地說。該功能只能格式化。您必須使用一個變量來存儲時間,然後使用'Timer'的'Tick'事件來控制時間(增加/減少)。你還必須輸入你的'Timer.Tick'事件,一個方法調用來顯示標籤上的時間。 – 2010-10-22 08:31:28

0

使用一個計時器和標籤的事件子變化值。

您需要一個計時器和三個計數器,用於秒,分鐘和小時。

計算分鐘,然後以分鐘/ 60爲模,如果返回0則開始計數分鐘。 模數分鐘/ 60,如果返回0,則開始計數小時。

+0

我已經發現了很多我自己,正如第一篇文章所述。我對代碼的外觀更感興趣。我的意思是,我在標籤中使用了「00:00」的文本值。無法像這樣轉換爲Double,我至今還沒能做到這一點。 – 2010-10-21 06:40:06

+0

在計時器刻度中嘗試鍵入 – bswietochowski 2010-10-21 07:37:11

5

下面是這種

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 
0
示例

通過添加一個計時器開始關閉。在任何你喜歡的地方調用它,在這個例子中,我將把它保持爲Timer1。添加標籤並將文本設置爲:00:00。

在代碼中的類已設置後(通常是公共類Form1中)讓一個變量作爲秒錶:Dim stopwatch As New Stopwatch

在計時器滴答事件代碼,把以下內容:(請注意,我00 :00標籤被稱爲標籤1)

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