Ich weiß, dass dies eine einfache Antwort für einige von Ihnen sein kann, aber ich weiß nicht, wie man das richtig macht. Ich habe einen Texteditor erstellt, der auch über ein Andockfenster verfügt, das Funktionen anzeigt. Ich habe es im Menü eingerichtet, dass F8 die Tastenkombination zum Anzeigen des Funktionsfensters ist. Ich möchte auch das F8-Tastendruck-Ereignis fangen die aktuellen Daten für die Funktionen im Programm zu analysieren, aber ich kann das passieren bekommen ..Overriding Tastendruck
Antwort
Ihren Text-Editoren erfassen KeyPressed Ereignis und überprüfen Sie die KeyEventArgs
, die in kommen, dann ist das nicht so falsch behandelt markieren, die das Ereignis an die übergeordnete Steuerung weitergeleitet werden verursacht:
Beispiel
KeyPressed(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F8) DoSomething();
e.Handled = false;
}
Als Antwort auf den Kommentar, den Sie zu Ihrer Frage hinzugefügt haben. Möglicherweise müssen Sie die Steuerelemente KeyPreview auf True festlegen. Ich denke, dass KeyPreview möglicherweise nur auf der Formularebene verfügbar ist, aber ich bin mir nicht sicher.
Ich denke, du hast es rückwärts. Wenn Sie die Eigenschaft "e.Handled" auf "true" setzen, wird verhindert, dass das Ereignis die Steuerstruktur weitergibt, während "e.Handled" auf "false" festgelegt wird, damit die anderen Steuerelemente es erfassen können. –
@Mike Webb ahhh Tippfehler in meiner Erkundung, danke – msarchet
Oh, warte. Entschuldigung, ich dachte, du hättest das Gegenteil gesagt. Verwirrend. Vielleicht möchten Sie Ihre Antwort ein wenig umschreiben. –
einen Event-Handler für das OnKeyPress
einrichten (oder OnKeyDown
oder OnKeyUp
) Ereignis, und prüfen Sie, welche Taste gedrückt wurde (in den Event-Argumenten). Dann können Sie tun, was Sie wollen.
Ich bin nicht sicher, alles zu verstehen, aber sie können nicht die KeyPress Event in jeder Kontrolle?
Ich glaube nicht, dass die getaggte Antwort korrekt ist. Der KeyPress-Ereignishandler behandelt nicht die Funktionstasten. Sie müssen den KeyUp-Ereignishandler oder die ProcessDialogKey-Methode verwenden.
- 1. Overriding DateTime.Now
- 2. Overriding AppConfig.ready()
- 3. Overriding Application_PreRequestHandlerExecute
- 4. Overriding GetHashCode
- 5. Overriding (Cast)
- 6. Overriding ApplicationHelper?
- 7. Overriding windows menu
- 8. overriding qt4 kompilieren Zeiteinstellungen
- 9. Overriding new SqlParameter
- 10. Overriding-handlePan: in UIScrollView
- 11. Overriding Methoden in Javascript
- 12. Symfony2 Overriding Controller
- 13. Overriding AngularJs Service
- 14. tvos Overriding pressesBegan
- 15. jQuery Overriding Checkbox Verhalten
- 16. Java Overriding funktioniert nicht
- 17. C++ Overriding Methoden
- 18. Extension Method Overriding
- 19. Hacking/Overriding Javascript
- 20. Overriding Equals-Methode funktioniert nicht
- 21. Mehrere Overriding-Methoden für onClick()
- 22. Overriding Equals-Methode in Structs
- 23. Overriding Payum Stripe Bundle-Vorlagen
- 24. Overriding Enum # toString nicht wünschenswert?
- 25. Nummer validieren bei Tastendruck
- 26. Funktion bei Tastendruck ausführen
- 27. Ruby: gets.chomp 1 Tastendruck
- 28. Ändern der Tastendruck
- 29. Tastendruck auf ASCII-Wert
- 30. Erkennung Strg + Tab Tastendruck
whats komisch ist, ich kann eine der f-Tasten drücken und nichts passiert, aber wenn ich eine normale Taste drücken, dann stoppt es. – mookie
sehe die Änderungen an meiner Antwort – msarchet