我想创建一个非常简单的程序,基本上是一个计时器。我有三组标签,lbl_seconds
,lbl_minutes
和lbl_hours
。 这些标签的默认值为00:00
,我希望计时器为每个标签更改该标签。我已经搜索了这个,但我似乎无法找到任何好的信息。创建一个简单的计时器来计算秒,分钟和小时
我需要三个独立的计时器吗?我也注意到,定时器有自己的tick事件处理程序。我想这是我需要改变标签的价值。如何做到这一点?
我想创建一个非常简单的程序,基本上是一个计时器。我有三组标签,lbl_seconds
,lbl_minutes
和lbl_hours
。 这些标签的默认值为00:00
,我希望计时器为每个标签更改该标签。我已经搜索了这个,但我似乎无法找到任何好的信息。创建一个简单的计时器来计算秒,分钟和小时
我需要三个独立的计时器吗?我也注意到,定时器有自己的tick事件处理程序。我想这是我需要改变标签的价值。如何做到这一点?
我认为你需要这种
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中打开它。
这正是我所期待的。我设法混合了一些可行的代码,但这很顺利:) – 2010-10-21 18:13:43
对不起,还有一个问题。此功能仅用于格式化?它实际上没有任何计数?我只是想知道我应该在timer_Tick事件中放置什么。以小时显示标签:分钟:秒都很好。但我仍然希望它能够使用tick事件进行实际计数。我也会看看你的项目,也许在那里得到一些线索。编辑:我想我解决了它。我声明一个全局变量为整数,并将其设置为form_load事件上的值0。然后在tick事件中,我将此值设置为自己+1。似乎工作得很好:) – 2010-10-22 07:43:07
正确地说。该功能只能格式化。您必须使用一个变量来存储时间,然后使用'Timer'的'Tick'事件来控制时间(增加/减少)。你还必须输入你的'Timer.Tick'事件,一个方法调用来显示标签上的时间。 – 2010-10-22 08:31:28
使用一个计时器和标签的事件子变化值。
您需要一个计时器和三个计数器,用于秒,分钟和小时。
计算分钟,然后以分钟/ 60为模,如果返回0则开始计数分钟。 模数分钟/ 60,如果返回0,则开始计数小时。
我已经发现了很多我自己,正如第一篇文章所述。我对代码的外观更感兴趣。我的意思是,我在标签中使用了“00:00”的文本值。无法像这样转换为Double,我至今还没能做到这一点。 – 2010-10-21 06:40:06
在计时器刻度中尝试键入 – bswietochowski 2010-10-21 07:37:11
下面是这种
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
通过添加一个计时器开始关闭。在任何你喜欢的地方调用它,在这个例子中,我将把它保持为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"))
所有三个标签都有默认的00:00还是每个标签初始化为00?在我看来,你只需要一个计时器,然后你需要有3个全局计数器来跟踪秒,分钟和小时。 – jangeador 2010-10-21 07:19:33
谢谢:)是的,每个标签的默认值都是00:00,这使得解析字符串变得更加困难。可能是因为:。现在,这可以分成两个标签吗?秒和分钟?而不是一个值为00:00的标签?你对全球计数器意味着什么?不熟悉我的想法。 – 2010-10-21 07:35:52
我不确定全局计数器是否正确,我的意思是说你不需要解析字符串,只需使用变量来跟踪h,m和s,并在每个tick事件中增加这些变量。然后,您可以将标签值更改为每个变量的值。您可以使用String.Format以任何您希望的方式格式化变量。 – jangeador 2010-10-21 08:00:38