- 題名: VBでカウントダウンタイマーを作っています。
- 日時: 2013/11/05 4:21:41
- ID: 31885
- この記事の返信元:
- (なし)
- この記事への返信:
- [31886] Re[1]: VBでカウントダウンタイマーを作っています。2013/11/05 6:10:38
- ツリーを表示
> If timeNs < 0 Then > timeNm = timeNm - 1 > timeNs = 59 > Label3.Text() = timeNm & ":" & timeNs > End If > timeNs = timeNs - 1 > Label3.Text() = timeNm & ":" & timeNs timeNsが1のときに呼び出されると、timeNs=timeNs-1=0になります。 timeNsが0のときに呼び出されると、timeNs<0は偽ですからtimeNs=timeNs-1で-1になります。 =で比較するようにした場合。 timeNsが0のときに呼び出されると、timeNs=0は真ですからまずIf文の中を処理します。timeNs=59になります。 If文を出た後、さらにtimeNs=timeNs-1しろとあるので、timeNs=58になります。 秒だけで管理して、表示する際に整数除算演算\と剰余演算Modで分と秒を計算する方法がお勧めです。
分類:[.NET]
5分間を計るカウントダウンタイマーを作っています。
分:秒表示にしたいのですが、○分0秒の次が○分−1秒になってしまいます。58秒からは正常に表示されます。
MyBase.Load
timeNm = 5
timeNs = 0
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Timer1.Enabled = False Then
Button1.Text() = "ストップ"
Timer1.Enabled = True
Else
Button1.Text() = "スタート"
Timer1.Enabled = False
timeNm = 5
timeNs = 0
Label3.Text() = timeNm & ":" & timeNs
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If timeNs < 0 Then
timeNm = timeNm - 1
timeNs = 59
Label3.Text() = timeNm & ":" & timeNs
End If
timeNs = timeNs - 1
Label3.Text() = timeNm & ":" & timeNs
If Label3.Text = "0:0" Then
Button1.Text() = "スタート"
Timer1.Enabled = False
timeNm = 5
timeNs = 0
Label3.Text() = timeNm & ":" & timeNs
My.Computer.Audio.Play(My.Resources.voice1, AudioPlayMode.Background)
End If
End Sub
If timeNs < 0 Then の部分の<を=に変えると、今度は59秒が飛ばされ、0秒の次が58秒になります。
この書き方では解決できないのではないかと思いましたが、他の書き方が思いつきません。
何かいい方法はないでしょうか。