C# wie eine Schleife, während die Maustaste gedrückt ist
Können Sie zeigen mich in die richtige Richtung? Ich versuche, eine Schleife ausgelöst, wenn die form gedrückt wird.
//pseudocode
While (button1 is pressed)
value1 += 1
Und dann natürlich die Schleife unterbrochen, wenn die Taste freigegeben wird,
InformationsquelleAutor der Frage Sinaesthetic | 2010-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu vermeiden, die Verwendung von threads können Sie ein Timer Komponente auf Ihre form/control und aktivieren Sie es mit dem Mauszeiger nach unten, und deaktivieren Sie es auf die Maus. Dann den code, den Sie normalerweise innerhalb der Schleife in der Timer_Tick-Ereignis. Wenn Sie möchten, verwenden Sie System.Timer.Timer Sie können den Timer.Elapsed-Ereignis statt.
Beispiel mit System.Timer.Timer):
InformationsquelleAutor der Antwort Doggett
Könnte ein thread zu tun, die zählen, und beenden Sie den Faden, wenn die Maustaste losgelassen wird. Die folgenden arbeitete gut für mich:
Natürlich, wenn Sie wollen, dass die event-Handler werden Methoden eher als lambdas, Sie haben sich zu drehen alle die Variablen in Felder.
InformationsquelleAutor der Antwort Timwi
InformationsquelleAutor der Antwort fahdovski
Einen den letzten Artikel von Fabulous Adventures in Coding bietet dieser Erzählung, die vielleicht helfen Ihre Frage zu beantworten:
InformationsquelleAutor der Antwort Daniel Pryden
War ich inspiriert von dem, was ich hier gelesen und mich dazu entschlossen meine eigene button-Klasse genannt RepeatingButton. Auf den ersten Klick wartet er 500ms, wiederholt sich dann, je 300ms bis 2s, dann wiederholt alle 100 MS (d.h. er verwendet Beschleunigung).
Hier ist der code;
Überall haben Sie eine Schaltfläche, können Sie einfach ersetzen Sie es mit einer Wiederholung-Taste und es wird nur noch die neue Funktionalität gebaut in.
Genießen!
Sterren
InformationsquelleAutor der Antwort Steztric
Überschreiben der
OnMouseDown()
Methode in deinem Formular und dann, wenn der Knopf gedrückt wird, würde gleich Ihre Schleife. Beispiel:Es ist nicht eine Schleife im herkömmlichen Sinn, sondern arbeiten für das, was Sie brauchen.
InformationsquelleAutor der Antwort Richard J. Ross III
Müssen Sie behandeln die
MouseDown()
- Ereignis für das Formular, mit demMouseEventArgs
argument, um herauszufinden, welche Schaltfläche gedrückt wurde.InformationsquelleAutor der Antwort Bernard
Es ist schon einige Jahre her, seit ich dies geschrieben, aber jemand von Ihnen positiv bewertet werden, sodass es kam mir in den Benachrichtigungen. Nun, ich habe viel mehr Erfahrung, lol, ich dachte, ich würde sehen, ob dieses einfache problem ist so einfach wie es klingt, und es war:
InformationsquelleAutor der Antwort Sinaesthetic
Basierend auf Steztric Antwort, eine Erweiterung-Methode mit ein paar Bugfixes und verschiedene Optionen für die Zunahme.
InformationsquelleAutor der Antwort Loathing
könnten Sie das mouseMove-Event überprüfen, ob die Maustaste gedrückt ist wie:
InformationsquelleAutor der Antwort Roy Ermers
RepeatButton ist ideal für:
InformationsquelleAutor der Antwort Arglist