2010-12-14 14 views
2

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

+0

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

+0

sehe die Änderungen an meiner Antwort – msarchet

Antwort

3

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.

+0

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. –

+0

@Mike Webb ahhh Tippfehler in meiner Erkundung, danke – msarchet

+0

Oh, warte. Entschuldigung, ich dachte, du hättest das Gegenteil gesagt. Verwirrend. Vielleicht möchten Sie Ihre Antwort ein wenig umschreiben. –

1

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.

1

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.