2010-10-21 125 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")) 
相关问题