2011-01-14 13 views
0

私はWPFアプリケーションにAcrobat Readerを埋め込みました。いくつかの作業をしたいいくつかのホットキーを定義しましたが、ホットキーはテキストボックスなどの内部にあるときにのみ機能します。私はctrl-shift-sを関数にマップすると、テキストボックス内でそれを押したときに関数が呼び出されるので、Adobe Acrobat Readerが私の前でホットキーを取得するので、これが必要であることを発見しました。テキストボックスには、Adobeの保存関数が呼び出されます。WPF:コンポーネントがホットキーに干渉する

MainWindowに定義されているホットキーが、Acrobat Readerやその他のものではなく、実行されたホットキーであることを確認するにはどうすればよいですか?あなたのメインウィンドウには、キーを押しますを取得したときにそれを含めて、何かの好みで読者に与える、組み込みのAcrobat Readerに、アプリケーション・デフォルトでキーボードフォーカスのように聞こえる

ニック

答えて

1

乾杯それ自身のメニューコマンド。

は、リーダーがフォーカスを受け取り、キーボードショートカットを処理するために多少困難です。メインウィンドウでも定義されているものではありません。

MainWindowクラスのOnKeyDownをオーバーライドし、そこにCtrl + Shift + Sがあるかどうかを確認してください。そうであれば、適切なコマンドイベントハンドラを直接呼び出して応答し、イベント引数に対してHandledをtrueに設定すると、MainWindowがそのキーを他の場所に送信できなくなります。

+0

これは興味深いと思います。私はAcrobat Readerのキーボードショートカットは必要ありませんが、私はそれを使って単一のページを見て、OCRで書かれたテキストをいくつかコピーすることができます。 (OK、ctrl-cが必要だと思いますが、それはそれです:-))アプリケーションがキーボードを最初に処理し、キーボードのフォーカスを取得し、応答しないとAcrobatに残す方法はありますか? OnKeyDownのヒントをありがとう、私はそれを使用して確認します。 :-) – niklassaers

+0

最終的には、アプリケーションのユーザーがキーボードのフォーカスを制御し、Readerがテキストの選択とコピーのためのフォーカスを受け取る必要があるため、リーダーから離れてフォーカスを得るのが難しいとは思われません。しかし、OnKeyDownのオーバーライドでは、Readerが処理したくないキーボードショートカットのイベント引数に対してHandledをtrueに設定するだけで済みます。 –

関連する問題