2010-10-29 6 views
5

Ich habe eine .NET-App mit Schaltflächen, die Zahlen für Mnemotechniken verwenden. (z. B. "& 1 - Check" und "& 2 - Cash") Wenn ich Alt + 1 drücke, erwarte ich, dass die Check-Taste angeklickt wird. Dies funktioniert, wenn ich die Standard-Zifferntasten auf einer Tastatur verwende. Wenn ich jedoch Alt + 1 mit dem Nummernblock drücke, übernimmt Windows und fügt das Symbol ein, das dem "alt code" von 1 entspricht. Siehe http://alt-codes.org/list/. Wie kann ich verhindern, dass dies in meiner Anwendung passiert?Wie kann ich Alt-Codes in einer .NET-Anwendung verhindern?

Danke!

+2

Sie einfach natürliche Mnemotechnik verwenden könnte, das heißt mit der Taste Buchstaben aus den Optionen gewählt werden. – Lazarus

Antwort

2

Dies kann durch Aktivieren von KeyPreview auf dem Formular und die Behandlung des KeyUp-Ereignisses erfolgen. Der folgende Code umgeht die Windows-Alt-Codes Funktionalität und bewirkt, dass die Schaltfläche klicken, wenn ich Alt + Numpad1 getroffen:

if (e.Alt && e.KeyCode == Keys.NumPad1) 
{ 
    e.Handled = true; 
    button1.PerformClick(); 
} 
1

Diese Kombination Alt + NumKey ist eine Windows-Funktion (sehr nützlich), die Sie nicht umgehen können.
Ich habe das vor einer Weile während der Arbeit an einem Spiel versucht (Sie wissen ... Skills Bar Shortcuts? ☺) und ich habe einige Nachforschungen gemacht ... Es ist unmöglich.
Ich wäre sehr glücklich darüber einen Weg auch zu sehen!

+0

Heilig! @ # $ (Ich kann keine weiteren Antworten kommentieren), ich bin froh, dass du einen Weg gefunden hast! : O Immer noch, ich denke, es ist ein Fehler. ☺ Edit: Keyboard Hooks lief nicht mal für mich ... – Vercas

1

Ein möglicher Weg, dies zu tun wäre, keyboard hooks zu verwenden, die Tastenanschläge abzufangen und dann zu handeln, wie Sie für richtig halten. Nun, wird es das obige Problem lösen, und das OS davon abhalten, den Charcode einzufügen, weiß ich nicht.

Verwandte Themen