Alle Timer beenden

  • VB.NET

Es gibt 34 Antworten in diesem Thema. Der letzte Beitrag () ist von MrYannis.

    Alle Timer beenden

    Hallo!
    Habe in meinem Programm jetzt schon 14 Timer (es sollen ca. 100 werden...)
    Gibt es eine möglichkeit alle Timer,die in dem Fenster vorhanden sind aufeinma zu beenden?(also nicht jeden einzeln)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrYannis“ ()

    Du könntest die maximal Anzahl in einer Variable speichern, dann mit Me.Controls("Timer" & i) alle durchgehen und stoppen.
    Aber so viele Timer sind schlecht, verlangsamen den Prozessor und sind auch kein guter Stil, also rate ich dir davon ab !
    Hallo MrYannis,

    unabhängig davon das das nichts werden wird.
    (Ein Programm mit mehr als einem Timer ist meist schlecht konzipiert.)

    Falls der von Nibel gezeigte Weg Funktioniert (habs nicht probiert)
    Geht das auch ohne Zähler mit einer

    VB.NET-Quellcode

    1. For Each ....
    2. Next

    Schleife.

    Gruss

    mikeb69
    das das nichts werden wird.
    ein timer verschlechtert die performance.
    ich will gar nicht wissen, wie stark diese bei 100 timern leitet...

    wofür brauchst du denn so viele timer?
    :P Mfg Aligator :P
    hmmm...also mir fällt leider kein weg ein,wie das Programm mit einem Timer laufen soll...
    Das Programm sendet (sendkey) ein Wort,und entert anschließend zweimal,danach soll es wieder ein Wort versenden(das alte Wort ist gelöscht) und immer so weiter...

    MrYannis schrieb:

    Habe in meinem Programm jetzt schon 14 Timer

    Wie alle schon sagten, das sind (mindestens) 13 zuviel

    Die Form.Control Collection zu durchlaufen dürfte auch nicht funktionieren, da Timer keine Controls sind sondern Components, aber nicht ausprobiert.

    Die Methode my.Computer.Keyboard.Sendkeys erlaubt Dir ein ganzes Wort und 2x Enter auf einmal zu schicken

    VB.NET-Quellcode

    1. my.computer.keyboard.sendkeys("Wort~~")
    so ganz grob müsste es doch so gehn, oder?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim dieListe As List(Of String)
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. 'Array mit den wörtern füllen
    5. '...
    6. '...
    7. '...
    8. '...
    9. '...
    10. Timer1.Start()
    11. End Sub
    12. Dim index As Integer = 0
    13. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    14. 'ich mach jetzt einfach, dass er es in ner Textbox anzeigt, anstatt mit send Keys
    15. TextBox1.Text = dieListe.ElementAt(index)
    16. 'die zwei Enter
    17. '...
    18. '...
    19. If index = dieListe.Count - 1 Then
    20. Timer1.Stop()
    21. End If
    22. index += 1
    23. End Sub
    24. End Class
    :P Mfg Aligator :P
    Also ich habs jetzt nochmal mit deinem Code probiert...
    Ich versteh allles von dem Code ausser "den Array mit Wörtern füllen" was muss ich da genau hinschreiben?
    Und nochmal danke,für den Code.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrYannis“ ()

    Bitteschöön

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim dieListe As List(Of String)
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. dieListe.Add("hallo")
    5. dieListe.Add("hello")
    6. End Sub
    7. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    8. Timer1.Start()
    9. ProgressBar1.Visible = True
    10. End Sub
    11. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    12. Form2.Show()
    13. End Sub
    14. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    15. Me.Close()
    16. End Sub
    17. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    18. Timer1.Stop()
    19. ProgressBar1.Visible = False
    20. End Sub
    21. Dim index As Integer = 0
    22. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    23. If Me.MinimizeBox = True Then
    24. TextBox1.Text = dieListe.ElementAt(index)
    25. End If
    26. If index = dieListe.Count - 1 Then
    27. Timer1.Stop()
    28. End If
    29. index += 1
    30. End Sub
    31. End Class
    hmmm, eigendlich richtig.
    aber eines is nich so gut:

    VB.NET-Quellcode

    1. If Me.MinimizeBox = True Then
    2. TextBox1.Text = dieListe.ElementAt(index)
    3. End If
    4. If index = dieListe.Count - 1 Then
    5. Timer1.Stop()
    6. End If
    7. index += 1


    so zählt er ja immer zu dem index +1. auch wen Me.MinimizeBox = False

    also machs so:


    VB.NET-Quellcode

    1. If Me.MinimizeBox = True Then
    2. TextBox1.Text = dieListe.ElementAt(index)
    3. index += 1
    4. End If
    5. If index = dieListe.Count - 1 Then
    6. Timer1.Stop()
    7. End If


    aber ob des die lösung des problems ist, glaub ich nicht....

    :P Mfg Aligator :P