2013-08-14 9 views
6

Ich habe eine Menustrip Artikel auf meiner Form, und es schließt meine Form, wenn ich es drücke. Ich möchte die Tastenkombination für meine MenuStrip Artikel "ESC", aber in den "ShorcutKey" -Einstellungen, hat es keine Option für ESC, gibt es eine Möglichkeit, ich kann es machen, dass es "ESC" ist? Ich muss es auf dem MenuStrip Artikel zeigen, dass "ESC" die Tastenkombination ist.Können Sie eine ESC-Tastenkombination hinzufügen?

tun dies nicht funktioniert:

menuStripItem.ShortcutKeys = Keys.Escape; 
+2

Wie ist die Situation? Sie können mit einem 'CancelButton' besser dran sein. – Ryan

Antwort

6

Ich glaube nicht, dass es eine direkte Lösung dieses Problems ist, können Sie diese Abhilfe verwenden, Stellen Sie den ShortcutKeyDisplayString in Code

menuStripItem.ShortcutKeyDisplayString = "ESC"; 

Innerhalb der KeyDown Ereignis des Formulars überprüfen, ob ESC gedrückt wird und Close() das Formular.

+0

Ich habe einen Code, der es so macht, dass ich die ESC-Taste drücke, um das Programm zu schließen. Was ich tun will, ist es so zu machen, dass es im Shortcut-Tastenbereich anzeigt, dass die Tastenkombination ESC – Dozer789

+0

ist Danke für den Versuch aber. – Dozer789

+1

Dann, wie ich in meinem Code gezeigt habe, können Sie die Eigenschaft 'ShortcutKeyDisplayString' als' Escape' setzen. Wenn Sie ESC einfach als Tastenkürzel anzeigen müssen. – Kurubaran

8

Winforms ist wählerisch bei der Tastenkombination, die Sie auswählen. Die Regel ist, dass es sich um eine Funktionstaste (F1-F12) oder einen anderen Schlüssel mit entweder Keys.Control oder Keys.Alt handelt. Die größere Intention hier ist, dass Sie nicht versehentlich einen normalen Schlüssel ersetzen können, der zum Beispiel in einer TextBox verwendet werden könnte. Die Esc-Taste betätigt normalerweise die Abbrechen-Schaltfläche eines Dialogs.

Keys.Escape ist ziemlich speziell; Alt + Escape und Strg + Escape können nicht funktionieren, da sie globale Tastenkombinationen in Windows sind.

Sie können also nicht die ShortcutKeys Eigenschaft verwenden; Sie müssen die Escape-Taste anders erkennen. Einfach in Ihrer Form-Klasse durch Überschreiben der ProcessCmdKey() Methode. Fügen Sie diesen Code in Ihr Formular ein:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
    if (keyData == Keys.Escape) { 
     this.Close(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+2

Dies wird funktionieren, um es zu schließen, aber ich habe bereits Code dafür. Was ich brauchte, war es, den Shortcut-Schlüssel anzuzeigen. – Dozer789

+1

@ Dozer789 Auch wenn Sie Code haben, um es zu schließen, ist dieser Code besser, weil Sie den Standard-Befehlsschlüsselprozess verhindern können, "ESC" ist ein spezieller Befehlsschlüssel, der in einigen Fällen unerwartet funktionieren kann. Das Deaktivieren/Überschreiben der Standardaktion wäre also besser. –

+0

Ich könnte diesen Code für mein Programm verwenden, ich erinnere mich nicht. Wenn ich nicht bin, werde ich wahrscheinlich diesen Code verwenden. – Dozer789

Verwandte Themen