2016-06-23 2 views
0

진행률 표시 줄에 채우기가 표시되고 시작 시간에 도달하면 진행률 표시 줄과 % 작업을 나타내는 레이블이 모두 표시됩니다. 다른 버튼을 "STOP"이라고 말할 수 없습니다. 딤 타이머가 현재 함수 밖에서 전혀 호출 할 수 없도록합니다.CountDown 타이머가 중지되지 않습니다.

중단을위한 제안 사항을 찾고 있습니다. 필자가 포함 가지고 노력하면

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 

답변

0

글로벌 필드 IsTimerRunning을 부울 유형으로 만들고 시작 버튼을 클릭하면 true로 설정하고 중지 버튼을 클릭하면 false로 설정하십시오. 타이머 틱 콜백 메서드가이 필드를 확인하게하고, true이면 정상 동작을 수행하고 그렇지 않으면 타이머를 중지합니다.

+0

나는 그것을 시험해 볼 것이다. 나는 코딩에 익숙하지 않다. 당신은 어떤 종류의 예도 갖고 있는가? –

+0

@ChrisScott 문제는 ​​VB 코드를 어떻게 작성해야할지 모르겠지만 읽을 수는 있지만 ... – Jai

+0

IsTimerRunning Worked, thanks man! –

0

값이 두 배이므로 equals 대신> =를 ​​검사 할 수 있습니다. 부동 소수점 데이터 유형은 때로는 동등하게 보일 수도 있습니다.

관련 문제