倒数计时器不停止
CountDown Timer not stopping
我已经填充了进度条,一旦达到 StartTime,进度条和标签都会显示工作百分比。
我无法让另一个按钮说 "STOP" Dim Timer 根本不允许我从当前函数外部调用它
正在寻找有关停止它的任何建议。
我试过让它包含 If
ProgressBar1.Value = Maximum then Timer.Stop() End if
但是计时器会一直滴答作响,不会停止。
Imports System.Threading
Imports System.Windows.Threading.DispatcherTimer
Imports System.Timers
Imports System.Math
Class MainWindow
Private Sub Rectangle_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
Me.DragMove()
End Sub
Private Sub button_Click(sender As Object, e As RoutedEventArgs)
Me.Close()
End Sub
Private Sub ext_button_Click(sender As Object, e As RoutedEventArgs) Handles ext_button.Click
Me.Close()
End Sub
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
Dim dispatcherTimer = New Threading.DispatcherTimer()
End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
Dim StartTime = (Convert.ToInt32(TextBoxHour1.Text) * 3600 + Convert.ToInt32(TextBoxMinute1.Text) * 60 + Convert.ToInt32(TextBoxSecond1.Text))
LabelST.Content = "Starting Seconds: " + Convert.ToString(StartTime)
LabelST2.Content = ProgressBar1.Value
ProgressBar1.Value = ProgressBar1.Value + 1
Dim percent As Int32 = Convert.ToString(ProgressBar1.Value / StartTime * 100)
LabelPercent1.Content = Convert.ToString(Math.Floor(percent)) + "%"
' Forcing the CommandManager to raise the RequerySuggested event
CommandManager.InvalidateRequerySuggested()
End Sub
Private Sub ButtonStart_Click(sender As Object, e As RoutedEventArgs) Handles ButtonStart.Click
Dim Timer = New Threading.DispatcherTimer()
Dim StartTime = (Convert.ToInt32(TextBoxHour1.Text) * 3600 + Convert.ToInt32(TextBoxMinute1.Text) * 60 + Convert.ToInt32(TextBoxSecond1.Text))
AddHandler Timer.Tick, AddressOf Timer_Tick
Timer.Interval = New TimeSpan(0, 0, 1)
If ButtonStart.Content = "START" Then
ProgressBar1.Maximum = StartTime
Timer.Start()
LabelPercent1.Content = (StartTime / 100)
End If
End Sub
Sub ButtonStart_Copy_Click(sender As Object, e As RoutedEventArgs) Handles ButtonStart_Copy.Click
End Sub
End Class
由于 Value 是双精度值,您可能需要检查 >= 而不是 equals。浮点数据类型有时看起来可能相等,即使实际上并不相等。
创建一个布尔类型的全局字段IsTimerRunning
,点击开始按钮时设置为true,点击停止按钮时设置为false。让计时器滴答回调方法检查此字段,并在为真时执行正常操作,否则停止计时器。
我已经填充了进度条,一旦达到 StartTime,进度条和标签都会显示工作百分比。 我无法让另一个按钮说 "STOP" Dim Timer 根本不允许我从当前函数外部调用它
正在寻找有关停止它的任何建议。 我试过让它包含 If
ProgressBar1.Value = Maximum then Timer.Stop() End if
但是计时器会一直滴答作响,不会停止。
Imports System.Threading
Imports System.Windows.Threading.DispatcherTimer
Imports System.Timers
Imports System.Math
Class MainWindow
Private Sub Rectangle_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
Me.DragMove()
End Sub
Private Sub button_Click(sender As Object, e As RoutedEventArgs)
Me.Close()
End Sub
Private Sub ext_button_Click(sender As Object, e As RoutedEventArgs) Handles ext_button.Click
Me.Close()
End Sub
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
Dim dispatcherTimer = New Threading.DispatcherTimer()
End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
Dim StartTime = (Convert.ToInt32(TextBoxHour1.Text) * 3600 + Convert.ToInt32(TextBoxMinute1.Text) * 60 + Convert.ToInt32(TextBoxSecond1.Text))
LabelST.Content = "Starting Seconds: " + Convert.ToString(StartTime)
LabelST2.Content = ProgressBar1.Value
ProgressBar1.Value = ProgressBar1.Value + 1
Dim percent As Int32 = Convert.ToString(ProgressBar1.Value / StartTime * 100)
LabelPercent1.Content = Convert.ToString(Math.Floor(percent)) + "%"
' Forcing the CommandManager to raise the RequerySuggested event
CommandManager.InvalidateRequerySuggested()
End Sub
Private Sub ButtonStart_Click(sender As Object, e As RoutedEventArgs) Handles ButtonStart.Click
Dim Timer = New Threading.DispatcherTimer()
Dim StartTime = (Convert.ToInt32(TextBoxHour1.Text) * 3600 + Convert.ToInt32(TextBoxMinute1.Text) * 60 + Convert.ToInt32(TextBoxSecond1.Text))
AddHandler Timer.Tick, AddressOf Timer_Tick
Timer.Interval = New TimeSpan(0, 0, 1)
If ButtonStart.Content = "START" Then
ProgressBar1.Maximum = StartTime
Timer.Start()
LabelPercent1.Content = (StartTime / 100)
End If
End Sub
Sub ButtonStart_Copy_Click(sender As Object, e As RoutedEventArgs) Handles ButtonStart_Copy.Click
End Sub
End Class
由于 Value 是双精度值,您可能需要检查 >= 而不是 equals。浮点数据类型有时看起来可能相等,即使实际上并不相等。
创建一个布尔类型的全局字段IsTimerRunning
,点击开始按钮时设置为true,点击停止按钮时设置为false。让计时器滴答回调方法检查此字段,并在为真时执行正常操作,否则停止计时器。