Frage zu ShortcutKeys
-
Hallo,
in meinem Programm verwende ich ShortcutKeys, dabei werden den einzelnen Menüpunkten entsprechende Shortcutkeys zugewiesen, siehe Beispielcode:
this->startToolStripMenuItem1->ShortcutKeys::set(Keys::F11);
Es funktioniert dabei alles wunderbar, sowohl vom Menü aus, als auch über die entsprechenden Tastenkombinationen, wird die gewünschte Funktion aufgerufen.
Das Problem ist aber, wenn ich zufälligerweise die Taste "F10" drücke, welche ich im gesamtem Programm nicht belegt habe (somit hat sie auch keine Funktion), dann sind die ShortcutKeys gesperrt. Nach dem Drücken von "F10" kann ich so oft die Taste "F11" drücken wie ich will, es passiert nichts, drücke ich erneut "F10" ist alles wieder wunderbar.
Dieses Verhalten tritt nur im Zusammenhang mit der Taste "F10" auf. Kennt hierfür jemand eine Abhilfe????
-
Hi, habs gerade mal probiert. Wenn ich F10 drücke, muss ich zunächst die Form wieder anklicken und erst dann reagiert er wieder auf F11. Obwohl es ne modale Anwendung ist. Meine erste Vermutung wäre, das der Focus an jemand anders vergeben wird...
Ne Abhilfe wäre wenn du nen KeyEventHandler erzeugst, per if die Taste F10 abfängst und anschliessend SuppressKeyPress auf True setzt. Damit wird die Taste F10 nicht an deine Form weitergeleitet...
Bsp:
private: System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e)
{
if(e->KeyCode == Keys::F10)
{
e->SuppressKeyPress = true;
}
if(e->KeyCode == Keys::F11)
{
MessageBox::Show("F11");
}
}
-
AFAIK ist das ein OS Spezifisches verhalten. Mach mal Notepad auf und drück F10.
Zur Dappeljuh lösung wäre eventuell noch ein KeyPriview = true notwendig.
-
Danke sehr für die schnelle Hilfe!!!
Die Lösung von Dappeljuh klappt wunderbar und der Zusatz von Knuddlbaer (KeyPreview == true) hat das ganze vollendet, da diese Angabe ebenfalls zwingend erforderlich ist.