Timer in WPF erstellen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Blackbird88.

    Timer in WPF erstellen

    Hallo

    Versuche grade einen timer in einer WPF anwendung zu erstellen.

    Probiert habe ich es so:


    VB.NET-Quellcode

    1. Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    2. Dim dt As DispatcherTimer = New DispatcherTimer()AddHandler dt.Tick, AddressOf dispatcherTimer_Tickdt.Interval = New TimeSpan(0, 0, 1)
    3. dt.Start()
    4. End Sub
    5. Public Sub dispatcherTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)My.Computer.Keyboard.SendKeys(txtBox1)
    6. My.Computer.Keyboard.SendKeys("{Enter}")
    7. End Sub
    8. End Class


    Und so :

    VB.NET-Quellcode

    1. Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.LoadedDim timer As New Timers.Timer
    2. timer.Interval = (500)
    3. timer.Enabled = TrueMy.Computer.Keyboard.SendKeys(txtBox.Text)
    4. My.Computer.Keyboard.SendKeys("{Enter}")
    5. End Sub
    6. End Class


    Bei beiden codes wird kein Fehler angezeigt, nur wenn ich nach dem Debuggen auf den Button Click, bekomm ich diese Meldung:


    InvalidOperationException wurde nicht behandelt


    SendKeys kann nicht innerhalb der Anwendung ausgeführt werden, da diese Anwendung keine Windows-Meldungen verarbeitet. Ändern Sie die Anwendung so, dass sie Meldungen behandelt, oder verwenden Sie die SendKeys.SendWait-Methode.

    Hmm ?

    Kann mir da jemand helfen?

    MfG
    Ja hab vergessen zu erwähnen wie ich das machen soll

    Ich hab versucht das einfach mal mit drann zuhängen also so My.Computer.Keyboard.Sendkeys.SendWait

    Aber gibt auch nen Fehler

    Hab das mal gegoogelt aber weiter komm ich mit meinen gefunden sachen da leider nicht wie muss ich das den angehen ?
    Klappt leider auch nicht



    wenn ich Imports System.Windows.Forms hinzufüge bekomm ich eine fehler medlung



    Warnung 1 Der in Imports "System.Windows.Forms" angegebene Namespace oder Typ enthält keine öffentlichen Member oder kann nicht gefunden werden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen Member enthält und dass der importierte Elementname keine weiteren Aliase enthält.



    Und

    VB.NET-Quellcode

    1. Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.LoadedDim timer, As New Timers.Timer
    2. timer.Interval = (500)
    3. timer.Enabled = True
    4. SendKeys.SendWait(txtBox.Text)End Sub
    5. End Class

    Diese Meldung
    Fehler 1 Das Schlüsselwort ist kein gültiger Bezeichner.
    Fehler 2 "Interval" ist kein Member von "Double".
    Fehler 3 "Enabled" ist kein Member von "Double".
    Fehler 4 Der Name "SendKeys" wurde nicht deklariert.
    Ok Verweis hinzufügen hat geklappt :)

    Nur jetzt


    VB.NET-Quellcode

    1. Imports System.Windows.FormsClass Window1Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    2. Dim timer, As New Timers.Timer
    3. Timer.Interval = (500)
    4. Timer.Enabled = True
    5. SendKeys.SendWait(txtBox.Text)
    6. End Sub
    7. End Class


    Jetzt kommen diese fehler
    Fehler 1 Das Schlüsselwort ist kein gültiger Bezeichner.
    Fehler 2 Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis.
    Fehler 3 Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis.

    Edit:

    Hab es jetzt nochmal ganz neu Probiert

    Und So hats geklappt:

    VB.NET-Quellcode

    1. Imports System.Windows.FormsClass Window1
    2. Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)Dim dt As New Windows.Threading.DispatcherTimer
    3. dt.Interval = TimeSpan.FromMilliseconds(5000)AddHandler dt.Tick, AddressOf dt_Tick
    4. dt.IsEnabled = True
    5. End SubSub dt_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
    6. SendKeys.SendWait(txtBox.Text)
    7. SendKeys.SendWait("{Enter}")
    8. End Sub
    9. End Class


    Danke Für deine Hilfe Phil

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Blackbird88“ ()

    Hallo

    Ich habe doch noch eine Frage und zwar:

    Wenn ich jetzt auf btnLos Klicke , klappt alles wunderbar alle 5 sek. wird mein Text ausgegeben

    Jetzt möchte ich mit btnEnde den Timer auf Stopp Setzen, dass klappt auch, nur wenn ich dann wieder auf btnLos Klicke wird mir der Text in der TextBox 2 mal ausgegeben.

    Umso öfterst ich das wiederhole, wird mir der text in der TextBox auch öfters ausgegeben

    Also Im Klartext

    Text Test

    Text Test Text Test

    Text Test Text Test Text Test

    und immer weiter .

    Wie Kann ich das verhindern ?

    Hier mal der Code dazu:

    VB.NET-Quellcode

    1. Imports System.Windows.Forms
    2. Partial Public Class Window2
    3. Dim dt As New Windows.Threading.DispatcherTimer
    4. Private Sub Los_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    5. If Not txtBox.Text.StartsWith("Login<Just>") Then
    6. txtBox.Text = ("Login<Just>" & txtBox.Text)
    7. End If
    8. dt.Interval = TimeSpan.FromMilliseconds(5000)
    9. AddHandler dt.Tick, AddressOf dt_Tick
    10. dt.IsEnabled = True
    11. End SubSub dt_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
    12. SendKeys.SendWait(txtBox.Text)
    13. SendKeys.SendWait("{Enter}")
    14. End Sub
    15. Private Sub Ende_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    16. dt.IsEnabled = False
    17. End Sub
    18. End Class