В настоящее время предпринимается попытка очень простого частного проекта сделать таймер обратного отсчета после того, как пользователь нажмет «старт». В идеале часы должны отсчитывать до нуля количество раз, равное TotalLap. Предполагается также удалить количество времени (1 минута x текущий круг) из таймера, прежде чем он снова запустится.
Я пробовал вариант while l oop, а теперь значение For l oop. В обоих случаях то, что я называю «счетчиком» с меткой «CurrentLap», достигает максимального значения плюс 1 (я добавил метку, чтобы показать мне значение CurrentLap, и оно всегда на 1 выше, чем TotalLap после первого запуска, пропуская все остальные круги).
Итак, мои проблемы следующие: 1) Мне еще не удалось найти подходящее место для установки команды останова для моего таймера. 2) CurrentLap идет от 0 до 4 (согласно моей метке для это)
Ниже я включу свой код, который будет включать закомментированные предыдущие попытки. Пожалуйста, имейте в виду, что я относительно неопытен в программировании и очень мало знаю терминологию (изучаю новые навыки!). Заранее благодарим.
Редактировать: В настоящее время для ускорения тестирования установлено время .25, обычно это целочисленное значение.
Public Class Form1
Dim CurrentLap As Integer = 0
Dim TotalLap As Integer = 4
Dim Time As Decimal = 0.25
'Dim TimeReduction As Decimal = 0.25
'Dim StartTime As Decimal = (Time - TimeReduction)
Private TargetDT As DateTime
Private CountDownFrom As TimeSpan = TimeSpan.FromMinutes(Time)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
tmrCountdown.Interval = 1000
TargetDT = DateTime.Now.Add(CountDownFrom)
tmrCountdown.Start()
End Sub
Private Sub tmrCountdown_Tick(sender As Object, e As System.EventArgs) Handles tmrCountdown.Tick
Dim ts As TimeSpan = TargetDT.Subtract(DateTime.Now)
If ts.TotalMilliseconds > 0 Then
lblTime.Text = ts.ToString("mm\:ss")
Else
lblTime.Text = "00:00"
tmrCountdown.Dispose()
CurrentLap = CurrentLap + 1
For CurrentLap = 0 To TotalLap Step 1
tmrCountdown.Start()
TargetDT = DateTime.Now.Add(CountDownFrom)
If CurrentLap = TotalLap Then Exit For
Next CurrentLap
'While CurrentLap < TotalLap
'tmrCountdown.Start()
'TargetDT = DateTime.Now.Add(CountDownFrom)
'CurrentLap = CurrentLap + 1
'End While
'If CurrentLap < TotalLap Then
'CurrentLap = CurrentLap + 1
'TargetDT = DateTime.Now.Add(CountDownFrom)
'tmrCountdown.Start()
'Else
'tmrCountdown.Stop()
'MsgBox("Race Over")
'End If
End If
lblCurrentLap.Text = CurrentLap.ToString("")
End Sub
Конечный класс