VB.NET秒表/ TimeSpan

时间:2013-04-01 19:52:40

标签: vb.net timespan stopwatch elapsed

我正在尝试创建一个秒表,允许数字下调根据需要调整时间。现在,如果我将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

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

elapsed = New TimeSpan(elapsed.Ticks * NumericUpDown4.Value)

您将获取到目前为止的滴答总数乘以NumericUpDown的值。这不会考虑NumericUpDown的历史。

您要做的是将经过的刻度数存储在对Timer4_Tick的调用之间持久的变量中。然后在该变量中添加一个乘以计时器回调中NumericUpDown的值。您可以将名为elapsed的变量存储为初始化为零的实例变量,并在计算新值时使用加法而不是乘法。