2011-01-14 4 views
0

Ich habe Acrobat Reader in meine WPF-Anwendung eingebettet, und ich habe mehrere Hotkeys definiert, die ich arbeiten möchte, aber die Hotkeys funktionieren nur, wenn ich in Textfeldern und ähnlichem bin. Ich habe entdeckt, dass dies sein muss, weil Adobe Acrobat Reader die Hotkeys vor mir bekommt, denn wenn ich ctrl-shift-s auf eine Funktion abbilde, wenn ich sie in ein Textfeld drücke, wird meine Funktion aufgerufen, aber wenn der Fokus nicht ist In einem Textfeld wird die Speicherfunktion von Adobe aufgerufen.WPF: Komponente interferiert mit Hotkeys

Wie kann ich sicherstellen, dass meine Hotkeys, die für MainWindow definiert sind, ausgeführt werden und nicht die von Acrobat Reader oder etwas anderem?

Prost

Nik

Antwort

1

die in Ihrer Anwendung standardmäßig auf den eingebetteten Acrobat Reader wie Tastaturfokus klingt, so dass, wenn Ihr Hauptfenster eine Taste drücken wird es sie für den Leser in Vorliebe etwas anderes gibt, einschließlich eigene Menübefehle.

Das ist etwas schwierig, da Sie wahrscheinlich wollen Reader Fokus erhalten und seine Tastaturkürzel behandeln - nur nicht diejenigen, die auch von Ihrem Hauptfenster definiert sind.

Versuchen Sie OnKeyDown in Ihrer MainWindow-Klasse zu überschreiben und sehen Sie, ob Strg + Umschalt + S dort ankommt. Wenn dies der Fall ist, antworten Sie, indem Sie den entsprechenden Befehlsereignishandler direkt aufrufen und setzen Sie Handled im Ereignisargument auf true, um zu verhindern, dass MainWindow diesen Schlüssel an anderer Stelle sendet.

+0

Das klingt interessant. Ich brauche die Tastenkürzel in Acrobat Reader nicht, ich benutze sie nur, um auf eine einzelne Seite zu schauen und eventuell OCR-Text zu kopieren. (Okay, ich denke, ich brauche ctrl-c, aber das ist es :-)) Gibt es eine Möglichkeit, meine Anwendung zuerst mit der Tastatur umgehen zu lassen, Tastaturfokus zu bekommen und sie dann für Acrobat zu lassen, wenn ich nicht antworte? Danke für den Tipp auf OnKeyDown, ich werde das zum Überprüfen verwenden. :-) – niklassaers

+0

Letztendlich steuert der Benutzer Ihrer Anwendung den Tastaturfokus, und der Leser muss den Fokus für die Textauswahl und das Kopieren erhalten, daher denke ich nicht, dass der Versuch, den Fokus vom Reader wegzuringen, funktionieren wird. Aber in der OnKeyDown-Überschreibung können Sie Handled auf True für das Ereignisargument für jede Tastenkombination festlegen, die nicht von Reader verarbeitet werden soll. –