Silverlight2アプリケーション内で発生するキーストロークをキャプチャしようとしています。入力フィールドはありません。ゲームを書いているので、どの矢印キーが押されているかを知る必要があります。イベントハンドラを介してこれらをキャプチャする方法についての私の最善の推測は失敗します。何かお勧めはありますか?
4 に答える
またお会いできてうれしいです(事実上)。
ルートUserControl要素でKeyDownを配線しようとしたことを前提としています。ここにいくつかのヒントがあります:
プラグインは、重要なイベントを確認する前にフォーカスする必要があります。開始するには、ユーザーにプラグインをクリックするように強制する必要があります。
矢印キーイベントを消費している別の要素(ScrollViewerなど)がないことを確認してください。ScrollViewerを使用している場合は、KeyUpのみが表示されます。
フルスクリーンモードへの切り替えはありません。
あなたがそのように欠けている単純なものでなければなりません。お役に立てば幸いです。
ルートグリッドでKeyDownおよび/またはKeyUpイベントを処理します。
Silverlight 2は、KeyUpイベントとKeyDownイベントをサポートしています(KeyPressではないと思います)。
これらのイベントでは、KeyEventArgsオブジェクトをパラメーターとして取得します。これからKeyCodeまたはKeyDataを取得できます。
この問題に関してさまざまなフォーラムのいくつかの異なるスレッドを確認する場合、ページ(ルート)要素でキーイベントを処理し、目的の効果を得るためにキーを解析し、コマンドを特定のコントロールにリダイレクトするのが最善のように思われます。
ページ
this.KeyDown += (s, e) =>
{
MyControl control = (MyControl)Layoutroot.FindName("controlname");
if(control != null)
{
control.MyPublicFunction(e.Key);
}
};
MyControl
public MyPublicFunciton(Key pressedKey)
{
if(pressedKey == Key.Enter)
{
//Do something
}
}