Autorepeat Button

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von programmer71.

    Autorepeat Button

    Hallo,

    Ich habe einen Button, nennen wir ihn "cmdFore", mit dem ich vorwärts blättere.

    Wenn ich den Button gedrückt halte, dann soll das Kommando in kurzen Zeitabständen wiederholt werden.

    Mit dem folgenden Coding habe ich das versucht ... aber damit wird das Kommando nur einmal ausgeführt.

    VB.NET-Quellcode

    1. Private Sub cmdFore_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles cmdFore.KeyDown
    2. cmdFore_Click(sender, e)
    3. End Sub


    Kann man so eine Autorepeat Funktionalität für einen Button in VB einrichten?

    LG
    Peter
    @Telcrome Ist schon ok. War nur ein kleiner Tipp ;)
    Ich starte demnächst auch mit C#

    @Peter329
    Tipp: Nimm lieber nen Timer. Enabled = True und starte ihn immer wieder neu, wenn sein Interval erreicht ist.

    VB.NET-Quellcode

    1. Sub Timer_Tick()
    2. If Timer.Interval = 100 Then
    3. Timer.Start()
    4. End Sub


    Also wenn der Interval 100 ist.
    Dann kannste alles das in dieses Sub schreiben.

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

    Also vielen Dank erst mal an die vielen Ratgeber.

    Also wenn ich das richtig verstehe, dann müsste man einen Timer starten, der sich selbst in regelmäßigen Abständen neu startet.

    Zwei Fragen dazu:

    1. Diese Routine darf nur angestoßen werden, wenn die Taste eine Weile gehalten wurde. Wenn man die Taste drückt und gleich wieder loslässt, dann soll kein Autorepeat gestartet werden.

    2. Das Autorepeat soll nur solange ausgeführt werden, wie die Taste gedrückt gehalten wird. Sobald man sie loslässt, soll die Ausführung sofort beendet werden. Wie frage ich das denn ab?

    Ich hoffe, habe verständlich machen können, wie das Autorepeat funktionieren soll. Man kann sich das ja im Windows ansehen. Öffnet einfach einen leeren File im Editor und haltet etwa die Taste "a" eine Weile gedrückt. Zunächst erscheint ein "a" und nach einem kurzen Moment, wird dann das "a" recht zügig wiederholt. Lässt man die Taste "a" wieder los, so endet die Wiederholung.

    LG
    Peter
    Die Sache mit dem Timer, hat mir jetzt sehr weiter geholfen. Ich hab eure Ratschläge versucht umzusetzen und das ist dabei herausgekommen:

    VB.NET-Quellcode

    1. Dim intTimerCount As Integer
    2. Private Sub cmdEnter_MouseDown(sender As System.Object, e As System.EventArgs) Handles cmdEnter.MouseDown
    3. txtDisplay.Text = ""
    4. intTimerCount = 0
    5. Timer1.Enabled = True
    6. End Sub
    7. Private Sub cmdEnter_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles cmdEnter.MouseUp
    8. Timer1.Enabled = False
    9. End Sub
    10. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    11. 'Execute once, delay and repeat
    12. If intTimerCount = 0 Or intTimerCount > 5 Then
    13. 'Command to be repeated
    14. txtDisplay.Text = txtDisplay.Text & "a"
    15. End If
    16. intTimerCount += 1
    17. End Sub


    Wenn man mit der Mouse den Button "cmdENTER" anklickt, dann wird im Stil von Windows das Zeichen "a" erst einmal angezeigt und nach einer kleinen Weile zügig wiederholt. (Als Tick Intervall habe ich 100 eingestellt). Wenn man die Mouse Taste loslässt ist der Spass dann zuende.

    Genauso hab ich mir das vorgestellt! Also recht herzlichen Dank an alle Ratgeber! Daumen ist oben ... click click click ... ich hoffe ich habe niemanden vergessen!

    LG
    Peter