So ermitteln Sie, ob KeyCode druckbares Zeichen ist

8

Ich verarbeite das Key-Down-Event auf einem meiner Steuerelemente. Wenn die gedrückte Taste eine tatsächliche Eingabe ist (alphabetisch, numerisch oder irgendein Symbol), möchte ich sie an eine Zeichenfolge anhängen, die ich habe. Wenn es ein Steuerzeichen ist (Enter, Escape, etc ..) will ich nichts machen.

Gibt es eine schnelle und einfache Möglichkeit festzustellen, ob es sich bei dem Tastencode um ein druckbares Zeichen oder ein Steuerzeichen handelt?

Momentan mache ich

%Vor%

Aber ich weiß, dass es wahrscheinlich ein paar weitere Schlüssel gibt, die mir egal sind, dass ich etwas Wichtiges im System-Handler mache, also möchte ich nicht mit ihnen umgehen.

    
captncraig 03.09.2010, 19:55
quelle

4 Antworten

8

Wenn Sie nur druckbare Zeichen möchten, möchten Sie wahrscheinlich nicht OnKeyDown . Sie sollten stattdessen OnKeyPress verwenden, was für druckbare Zeichen (mehr oder weniger) nur heißt, und Übersetzungen für Modifier-Schlüssel anwenden (hauptsächlich Shift).

Ich sagte "mehr oder weniger" oben, weil Sie auch Kontrollzeichen bekommen, die nicht unbedingt druckbar sind. Diese können jedoch leicht mit char.IsControl herausgefiltert werden.

%Vor%

Etwas, das in einem Design wie diesem leicht zu übersehen ist, ist die Rücktaste. In der Regel besteht das beste Verhalten beim Empfang eines Rückschrittzeichens ( '\b' oder (char)8 ) darin, das letzte Zeichen aus dem Puffer zu entfernen. Es ist leicht zu vergessen, dies zu tun.

    
P Daddy 03.09.2010, 20:18
quelle
6

Wenn Sie das KeyPress -Ereignis anstelle von KeyDown behandeln, hat das KeyPressEventArgs eine KeyChar Eigenschaft. Dadurch wird die Anzahl der zusätzlichen Schlüsselereignisse reduziert. Sie können dann etwas wie char.IsLetterOrDigit oder char.IsControl verwenden, um was zu filtern du willst.

    
Bob 03.09.2010 20:10
quelle
3

Angenommen, Sie haben nur KeyCode , können Sie P / Invoking in MapVirtualKey Funktion. Ich bin mir nicht sicher, ob das für alle Kulturen funktionieren wird.

%Vor% %Vor%

Ausgabe:

%Vor%     
Ani 03.09.2010 20:25
quelle
0

Wenn Sie diese Funktion überprüfen, können Sie char auf byte umwandeln (oder einfach die Funktion bearbeiten):

%Vor%     
shakram02 13.03.2016 14:53
quelle

Tags und Links