2016-02-18

[PowerShell] KeyDownイベントを設定する

今回は、キーボードで何らかのキーを押したときに発生するKeyDownイベントの記述方法をご紹介致します。

マウスを押したときに発生するイベントについては、過去記事をご覧ください。
   参照 → http://letspowershell.blogspot.jp/2015/09/powershell_21.html


早速スクリプトを記述致します。

なお、今回はフォーム上にあるテキストボックス$Textboxに、KeyDownイベントを設定するという想定で、KeyDownイベント部分のみを記述し、その他の部分は省略していますのでご注意ください。
# KeyDownイベントの記述方法
$Event = {
  $PushKey = $_.KeyCode
  [System.Windows.Forms.MessageBox]::Show("押されたキーは:${PushKey}です", "結果")
}
$Textbox.Add_KeyDown($Event)

それでは解説していきます。


例えばフォーム上にテキストボックスがあり、入力待ちの状態であるとします。

この時、このテキストボックスが「コントロール」であり、入力待ちの状態が「フォーカスがある」ということです。
上記スクリプトでは、テキストボックスにフォーカスがある状態で、何らかのキーが押されると、押されたキーのキーコードをメッセージボックスで表示します。

イベント内の「$_.KeyCode」はKeyEventArgsのKeyCodeプロパティを表しており、各キーに定められたメンバー名を返します。

例えばEnterキーは「Return」、BackSpaceキーは「Back」が返ります。
それぞれのメンバー名はhttps://msdn.microsoft.com/ja-jp/library/system.windows.forms.keys(v=vs.110).aspxを参照ください。
例えば、Enterキーを押すと次のメッセージが表示されます。


また、Deleteキーを押すと、次のメッセージが表示されます。


これを用いれば、特定のキーを押した場合のみに処理を行うことも可能です。

上記スクリプトを、「Enterキーを押した場合のみ、メッセージボックスを表示」させるよう改変すると次のようになります。
# KeyDownイベントの記述方法
$Event = {
  $PushKey = $_.KeyCode
  IF ( $PushKey -eq "Return" )
  {
   [System.Windows.Forms.MessageBox]::Show("押されたキーは:${PushKey}です", "結果")
  }
}
$Textbox.Add_KeyDown($Event)

KeyCodeを用いれば、IF~else文やSwitch文と組み合わせることによって、押したキーによって処理内容を変えることも可能となります。

=============================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=============================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=============================================================

スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/