2013-04-01 159 views
1

我想創建一個秒錶,它將允許numbericupdown根據需要調整時間。現在,如果在時間到期的時候將numbericupdown更改爲「2」,它會將整個值加倍,包括已經計時的值,這是我不想要的值。有沒有一種方法可以使用秒錶來處理從numbericupdown的值變化開始的時間,如果有的話可以提供一個例子嗎?VB.NET秒錶/ TimeSpan

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

那麼你想要做什麼?我仍然不清楚這一點。 – Neolisk

+0

我正在製作一個秒錶,用於記錄生成產品所需的時間,其中包含用於計算在任何給定時間使用產品的人數的numbericupdown。 –

+0

您是否認爲從事產品開發的人數呈線性增長?參見[布魯克斯的維基法律](http://en.wikipedia.org/wiki/Brooks's_law)。 :) – Neolisk

回答

0

的問題是在這條線:

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

你正在服用蜱到目前爲止乘以的NumericUpDown的值的總數。這不會考慮NumericUpDown的歷史。

你想要做什麼是蜱蟲的數量經過存儲在一個變量是調用Timer4_Tick之間持續。然後在該計時器回調中將該變量乘以NumericUpDown的值。您可以通過將稱爲elapsed的變量存儲爲初始化爲零的實例變量並在計算新值時使用加法而不是乘法來實現。