1

numbericupdown で必要に応じて時間を調整できるストップウォッチを作成しようとしています。現在、時間が経過している間に numbericupdown を「2」に変更すると、すでに時間が設定されているものを含む全体の値が 2 倍になりますが、これは望ましくありません。ストップウォッチを使用して、numbericupdown の値が変化した時点から時間を倍増させる方法はありますか?もしそうなら、誰かが例を提供できますか?

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
4

1 に答える 1

0

問題は次の行にあります。

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

これまでの合計ティック数に NumericUpDown の値を掛けています。NumericUpDown の履歴は考慮されません。

あなたがしたいことは、への呼び出し間で永続的な変数にティックの経過数を格納することですTimer4_Tick。次に、タイマー コールバックで NumericUpDown からの値を掛けた変数に 1 を追加します。これを行うには、呼び出した変数をゼロに初期化されたインスタンス変数として保存しelapsed、新しい値を計算するときに乗算ではなく加算を使用します。

于 2013-04-01T20:14:59.453 に答える