funkymunkey99 Ответов: 1

Вопрос об использовании времени с секундомером


Привет
У меня есть программа, которая использует таймеры обратного отсчета, она работает, но я пытаюсь сделать что-то новое с этим таймером блендера. Он использует NumericUpDown и должен добавить 5 минут для каждого значения, 1-5 минут, а 2-10 минут и т. д. Я действительно нашел способ добавить 5 минут к BlenderCountDownFrom, но при нажатии кнопки BlenderButton для остановки она сохраняла новое значение. Я полный новичок и не знаю, что я делаю, так что код, вероятно, ужасен! Фактический код обратного отсчета я получил из примера в интернете.

Dim BlenderCountDownFrom As New TimeSpan(0, 5, 1)

Dim BlenderStopwatch As New Stopwatch

 Private Sub BlenderButton_Click(sender As Object, e As EventArgs) Handles BlenderButton.Click
        If BlenderButton.Text = "Start" Then
            BlenderTimer.Interval = 100
            BlenderButton.Text = "Stop"
            BlenderTimer.Start()
            BlenderStopwatch.Reset()
            BlenderStopwatch.Start()
        Else
            BlenderButton.Text = "Start"
            My.Computer.Audio.Stop()
            BlenderTimerLabel.BackColor = Color.White
            BlenderTimer.Stop()
            BlenderStopwatch.Stop()

            BlenderTimerLabel.Text = ("00:05:00")
            Me.MiscTab.Text = "Misc"
        End If
    End Sub

    Private Sub BlenderTimer_Tick(sender As Object, e As EventArgs) Handles BlenderTimer.Tick
        If BlenderStopwatch.Elapsed <= BlenderCountDownFrom Then
            Dim toGo As TimeSpan = BlenderCountDownFrom - BlenderStopwatch.Elapsed
            BlenderTimerLabel.Text = String.Format("{0:00}:{1:00}:{2:00}", toGo.Hours, toGo.Minutes, toGo.Seconds)
        Else
            BlenderTimer.Stop()
            My.Computer.Audio.Play(My.Resources.Alarm.Blender, AudioPlayMode.BackgroundLoop)
            Me.MiscTab.Text = "Alarm"
            BlenderStopwatch.Stop()
            BlenderTimerLabel.BackColor = Color.Red
        End If
    End Sub

    Private Sub BlenderSetButton_Click(sender As Object, e As EventArgs) Handles BlenderSetButton.Click
        Blender.HowManyBlender()
    End Sub



Public Class Blender


    Public Shared Function HowManyBlender()

        'Must be a better way than this!

        If JBCountdown.BlenderUpDown.Value = 1 Then
            JBCountdown.BlenderTimerLabel.Text = ("00:05:00")
        End If

        If JBCountdown.BlenderUpDown.Value = 2 Then
            JBCountdown.BlenderTimerLabel.Text = ("00:10:00")
        End If

        If JBCountdown.BlenderUpDown.Value = 3 Then
            JBCountdown.BlenderTimerLabel.Text = ("00:15:00")
        End If

        If JBCountdown.BlenderUpDown.Value = 4 Then
            JBCountdown.BlenderTimerLabel.Text = ("00:20:00")
        End If

        If JBCountdown.BlenderUpDown.Value = 5 Then
            JBCountdown.BlenderTimerLabel.Text = ("00:25:00")
        End If

        Return (0)
    End Function

End Class


Что я уже пробовал:

Я добавил 5 минут к BlenderCountDownFrom, не могу точно вспомнить, как именно, но он сохранил значение, когда я нажал кнопку stop (так же, как кнопка start просто меняет метку) Мне нужно вернуться к 5 минутам, если только NumericUpDown не установит новое значение

Gerry Schmitz

Просто добавьте / вычитайте некоторое кратное интервалу таймера. Все остальное-безумие.

funkymunkey99

Я не уверен, как я мог бы это сделать? Программа использует секундомер и временной интервал, когда секундомер больше, чем временной интервал, он делает сигнал тревоги, не зная, где интервал таймера входит в него?

1 Ответов

Рейтинг:
2

Maciej Los

Не уверен, что я вас хорошо понимаю, но чтобы изменить интервал таймера, измените его Interval собственность:

BlenderTimer.Interval = 100 'new value here


Видеть:
Таймер.Свойство Интервала (System.Таймеры) | Microsoft Docs[^]
Таймер.Свойство Интервала (System.Окна.Формы) | Microsoft Docs[^]