Wie wird das TextChanged-Ereignis nur behandelt, wenn der Benutzer mit der Eingabe aufhört?

8

Ich habe ein TextBox mit einem TextChanged Ereignis verdrahtet. Am Ende wird eine Abfrage an eine SQL-Datenbank gestellt, daher möchte ich die Anzahl der Abfragen begrenzen.

Ich möchte nur die Abfrage machen, wenn der Benutzer keinen Schlüssel in etwa 300 Millisekunden gedrückt hat. Wenn aus irgendeinem Grund die vorherige Abfrage noch ausgeführt wird, müsste ich dies abbrechen und dann eine neue Abfrage ausgeben.

    
esac 24.06.2010, 17:54
quelle

5 Antworten

8

Erstellen Sie ein System.Windows.Forms.Timer und setzen Sie es nach jedem Tastendruck zurück (z. B. stoppen und dann starten). Wenn das Timer-Ereignis ausgelöst wird, deaktivieren Sie den Timer.

    
Brian 24.06.2010, 18:17
quelle
1

Verwenden Sie das Reactive Framework, um eine Folge von Ereignissen auszulösen. Ich bin nicht sicher, genau wie das funktionieren würde, aber Sie können es hier nachlesen ( Reaktive Erweiterungen für .NET ) und sehen, ob es Ihre Bedürfnisse erfüllt. Es gibt auch eine Reihe von Beispielen: Beispiele . Das "Throttling" Beispiel könnte das sein wonach Sie suchen.

    
Garo Yeriazarian 24.06.2010 17:59
quelle
1

Dank @ Brians Idee und dieser Antwort habe ich meine eigene Version eines Timers entwickelt Problem. Das hat gut für mich funktioniert. Ich hoffe, es hilft auch den anderen:

%Vor%     
Alex Jolig 08.12.2015 05:45
quelle
0

1) Erstellen Sie einen Timer.

2) Erstellen Sie einen Handler für das Tick-Ereignis Ihres Timers. Überprüfen Sie bei jedem Häkchen, ob genügend Leerlaufzeit verstrichen ist. Wenn dies der Fall ist, STOPPEN Sie den Timer und führen Sie die Abfrage aus.

3) Immer wenn ein Tastendruck in dieser Textbox auftritt, NEUSTACHTEN Sie den Timer.

    
seraphym 24.06.2010 18:17
quelle
0

Fügen Sie einen zweiten actionlistener hinzu, der immer aufgerufen wird, wenn der Benutzer eine beliebige Taste drückt, und wenn er aufgerufen wird, speichert er die aktuelle Zeit in einer globalen Variablen. Wann immer Ihr TextChanged-Ereignis aufgerufen wird, überprüft es den Zeitunterschied zwischen der globalen Variablen und der aktuellen Zeit.

Wenn der Unterschied weniger als 300 Millisekunden beträgt, starten Sie einen Zeitgeber, um die Abfrage nach 300 Millisekunden auszuführen. Wenn der Benutzer dann eine andere Taste drückt, setzt er den Timer zuerst zurück.

    
Kyra 24.06.2010 17:57
quelle

Tags und Links