2012-04-03 6 views
0

Kann any1, wie man diesen Code erstellt -> Um andere Eingaben für mehr als 2 Sekunden nach der Ausführung zu verhindern und zu ignorieren? Es scheint eine sehr einfache Frage zu sein, aber ich habe seit 2 Tagen dafür gegoogelt, pls Hilfe.Andere Eingaben ignorieren, während der Code ausgeführt wird

public void PressCOM(string key) 
{ 
    if (key == "P") 
    { 
     PressP("p"); 
     ReleaseKey(); 
    } 
} 
+0

System.Threading.Thread.Sleep (2000); nicht tun was du brauchst? – JMK

+0

'Sleep' verzögert nur die Eingabe, ignoriert die Eingabe des Benutzers nicht ... – hakunabean

Antwort

2

Ich weiß nicht, wann PressCOM genannt wird, oder was PressP und ReleaseKey tun, so könnte ich weg sein. Wenn jedoch PressCOM als Ereignis aufgerufen wird, wenn eine Taste gedrückt wird, warum erstellen Sie nicht Ihre eigene Sperrzeit, während der Sie keine weiteren Ereignisse behandeln werden?

+0

Eigentlich ist dies ein Code für die virtuelle Touchpad-Tastatur. Aber der Code, den sie benutzen, ist mir fremd. Ich weiß also nicht, wie ich die Funktion in etwas ähnlich wie Buttons ändern soll. Das 'PressCOM', das virtuelle Pad, und' PressP' sind ein Bild, das vom Benutzer berührt wird. – hakunabean

2

Wenn dieser Code bei einem Event-Handler-Methode aufgerufen wird, können Sie:

1) Deaktivieren Sie die Methode Event-Handler auf ein und reaktivieren Sie an der Ausfahrt

myCtrl.KeyPress -= new KeyPressEventHandler(myHandler); 
PressCom(key); 
myCtrl.KeyPress += new KeyPressEventHandler(myHandler); 

2) oder einfach eine statische globale erklären bilden variabel und in Ihrem KeyPress-Ereignis

private static _onKeyPress = false; 

if(_onKeyPress == false) 
{ 
    _onKeyPress = true; 
    PressCom(key); 
    _onKeyPress = false; 
} 

in jedem Fall ist es notwendig, hinzuzufügen, zu dem Pseudo-Code hier vorgestellten einen angemessenen Umgang mit Fehlerbedingungen. Andernfalls könnten Sie in einem Zustand enden, in dem kein Ereignishandler mit Ihrem Tastendruck verdrahtet ist oder eine globale Variable auf "true" gesetzt ist und keiner sie auf "false" zurücksetzen kann.

Verwandte Themen