2013年05月16日

WPFサンプル:KeyDownイベントとKeybord.Modifiersプロパティ

   このエントリーをはてなブックマークに追加 Clip to Evernote
WindowsFormsでおなじみの KeyDownイベントは、WPFでも利用できます。
このイベントを利用すれば、特定のキーが押されたかどうかを判定することができます。
ここでは、KeyDownイベント と PreviewKeyDown イベントの簡単なサンプルを書いてみました。
TextBoxで押されたキーの情報をTextBlockに表示しています。また、その親であるStackPanelでのKeyDownイベント と PreviewKeyDown イベントも処理しています。
いつものように、まずはXAMLを示します。


次にC#のコードを示します。


このサンプルコードでは、それぞれのプロパティの型がわかるように、一時変数に代入しています。その時に押されたキーの情報は、KeyEventArgsから得られますが、これだけだと、Shiftキーが一緒に押されているかといった情報を得られません。それには、KeybordクラスのModifiers staticプロパティを見る必要があります。コードの後半部分ではその判定を行っています。

ちなみに、KeybordクラスのModifiers静的プロパティは、KeyDownイベントハンドラ以外でも利用できますので、Shiftキーを押しながら、マウスをクリックしたかどうかという判定に利用することもできます。
実行してみるとわかりますが、TextBoxにフォーカスがある場合でも、CheckBoxにフォーカスがある場合でも、キーが押されると、StackPanelのKeyDownイベント と PreviewKeyDown イベントが発生するのが確認できます。
また、PrevirewKeyDownでは、IMEがOnの状態で押されたキーも確認できます。

TextBox上でShift+aを押したところ。
KeyDown1

TextBox上で、Alt+Sを押したところ。
KeyDown2

CheckBoxにフォーカスを当て、Fを押したところ
KeyDown3



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52318833