我正在尝试创建一个秒表,允许数字下调根据需要调整时间。现在,如果我将timeicupdown更改为“2”而时间正在进行,它将使整个值加倍,包括已经计时的时间,这是我不想要的。有没有办法使用秒表来计算从数字化后的值变化开始的时间,如果有的话可以提供一个例子吗?
Dim BTStopWatch1 As New Diagnostics.Stopwatch
Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
Dim elapsed As TimeSpan = Me.BTStopWatch1.Elapsed
elapsed = New TimeSpan(elapsed.Ticks * NumericUpDown4.Value)
lblBnch.Text = String.Format("{0:00} : {1:00} : {2:00}", Math.Floor(elapsed.TotalHours), elapsed.Minutes, elapsed.Seconds)
End Sub
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
Timer4.Start()
Me.BTStopWatch1.Start()
End Sub
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
Timer4.Stop()
Me.BTStopWatch1.Stop()
End Sub
答案 0 :(得分:0)
问题在于这一行:
elapsed = New TimeSpan(elapsed.Ticks * NumericUpDown4.Value)
您将获取到目前为止的滴答总数乘以NumericUpDown的值。这不会考虑NumericUpDown的历史。
您要做的是将经过的刻度数存储在对Timer4_Tick
的调用之间持久的变量中。然后在该变量中添加一个乘以计时器回调中NumericUpDown的值。您可以将名为elapsed
的变量存储为初始化为零的实例变量,并在计算新值时使用加法而不是乘法。