簡體   English   中英

WPF VB.NET 中的經過時間事件處理程序

[英]Elapsed Time Event Handler in WPF VB.NET

我正在我的程序中實現一個計時器,該計時器在按下按鈕時啟動。 一旦時間過去,我的意圖是關閉程序; 但是,我收到無效操作異常。 我的程序的不同部分也使用 Close() 操作,但即使我從程序中刪除它,它仍然會拋出錯誤。 我怎樣才能讓它正常工作?

Public Class Password
    Public timer1 As System.Timers.Timer = New System.Timers.Timer()
    Public loginAttempts As Integer = 0
    Private myPassword As String = "MPCgso4char"



    Private Sub AcceptButton_Click(sender As Object, e As RoutedEventArgs)

        wrongPass.Content = "Incorrect password. Please try again."
        wrongPass.Visibility = Visibility.Hidden

        Select Case passTextBox.Text
            Case = myPassword
                Close()
            Case = ""
                wrongPass.Content = "Please enter a valid password."
                wrongPass.Visibility = Visibility.Visible

            Case <> myPassword
                wrongPass.Visibility = Visibility.Visible

        End Select

    End Sub

    Private Sub DeclineButton_Click(sender As Object, e As RoutedEventArgs)
        passTitle.Visibility = Visibility.Hidden
        AcceptButton.Visibility = Visibility.Hidden
        DeclineButton.Visibility = Visibility.Hidden
        showPass.Visibility = Visibility.Hidden
        passTextBox.Visibility = Visibility.Hidden
        If wrongPass.Visibility = Visibility.Visible Then
            wrongPass.Visibility = Visibility.Hidden
        End If

        decBtnClickEvent.Visibility = Visibility.Visible
        timer1.Interval = 1500
        timer1.Enabled = True
        timer1.Start()
        AddHandler timer1.Elapsed, AddressOf TimedEvent

    End Sub

    Private Sub passTextBox_TextChanged(sender As Object, e As TextChangedEventArgs)
        wrongPass.Visibility = Visibility.Hidden
    End Sub

    Private Sub showPass_Checked(sender As Object, e As RoutedEventArgs)

    End Sub
    Private Sub TimedEvent(sender As Object, e As System.Timers.ElapsedEventArgs)
        Close()
    End Sub

    Private Sub Enter(sender As Object, e As KeyEventArgs) Handles passTextBox.KeyDown

        If e.Key = Key.Enter Then
            AcceptButton_Click(Nothing, Nothing)
        Else
            Exit Sub
        End If

    End Sub

End Class

嘗試使用Application.Current.Shutdown()而不是Close()

Private Sub TimedEvent(sender As Object, e As System.Timers.ElapsedEventArgs)
    Application.Current.Shutdown()
End Sub

此外,請確保您的Public Class Password另一個線程中。

在這種情況下,您可以使用:

Me.Dispatcher.Invoke(Sub() Application.Current.Shutdown() End Sub) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM