Benutzer mit den meisten Antworten
wie kann man Eingaben der Tastatur herausfinden

Frage
-
Hallo,
ich habe ein kleines Programm geschrieben, und möchte nun, dass das Menuitem für öffnen bei Strg+O geöffnet wird, bei Strg+s Speichern, usw.
Ich habe folgendes im KeyDown Ereignis geschrieben, aber ohne Erfolg:
privatevoidMyWindows_KeyDown(objectsender, KeyEventArgse)
{
if(e.Key == Key.LeftCtrl && e.Key == Key.O)
{
//Der code, der ausgeführt wird
}
}
Was mache ich falsch?
Gibt es einen Leichteren Weg?
Danke im Voraus!
Antworten
-
Hallo,
Windows Forms ist so konzipiert, dass nur das Control Tastatureingaben erfährt das gerade den Fokus besitzt.
Wenn du einen Menübefehl aufrufen willst, kannst du im ToolStripMenuItem die ShortcutKeys-Eigenschaft festlegen. Das dürfte der einfachste Weg sein um Shortcuts zu implementieren.
Wenn du weitere Befehle hinzufügen möchtest, solltest du ProcessCmdKey überschreiben:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.A | Keys.Control: MessageBox.Show("Mein Befehl"); break; default: return base.ProcessCmdKey(ref msg, keyData); } return true; }
In dem Switch-Statement kannst du beliebig weitere Tastenkombinationen hinzufügen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Holger M. Rößler Donnerstag, 18. Juni 2015 19:24
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 24. Juni 2015 07:57
-
Hallo,
ProcessCmdKey musst du innerhalb der Form-Klasse überschreiben. Wo anders geht das nicht.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert tire257 Donnerstag, 9. Juli 2015 18:32
Alle Antworten
-
Hallo,
Windows Forms ist so konzipiert, dass nur das Control Tastatureingaben erfährt das gerade den Fokus besitzt.
Wenn du einen Menübefehl aufrufen willst, kannst du im ToolStripMenuItem die ShortcutKeys-Eigenschaft festlegen. Das dürfte der einfachste Weg sein um Shortcuts zu implementieren.
Wenn du weitere Befehle hinzufügen möchtest, solltest du ProcessCmdKey überschreiben:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.A | Keys.Control: MessageBox.Show("Mein Befehl"); break; default: return base.ProcessCmdKey(ref msg, keyData); } return true; }
In dem Switch-Statement kannst du beliebig weitere Tastenkombinationen hinzufügen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Holger M. Rößler Donnerstag, 18. Juni 2015 19:24
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 24. Juni 2015 07:57
-
Hallo danke für die antworten, aber als ich die untere Variante ausprobieren wollte, kam folgende Fehlermeldung:
"Es wurde keine passende Methode zum Überschreiben gefunden."
Muss ich noch was einbinden oder so? Die Fehlermeldung ist in der Zeile mit:
returnbase.ProcessCmdKey(refmsg, keyData);
(bei ProcessCmdKey ist die Fehlermeldung)
Danke im Voraus.
-
Hallo,
ProcessCmdKey musst du innerhalb der Form-Klasse überschreiben. Wo anders geht das nicht.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert tire257 Donnerstag, 9. Juli 2015 18:32