ソフトウェアキーボードのEnterキーをタップしたときに、何らかの処理を行いたいことは多々あるのではないでしょうか。
例えば、検索画面の場合だとEnterキーで検索や、入力項目の多い画面では次のコントロールへフォーカスを移動させるのは要望としては定番です。今回はそのトリガーとなるソフトウェアキーボードのEnterキーが押されたイベント拾い方についてご紹介します。
ページのXAMLにTextBoxコントロールを配置していたとします。このTextBoxコントロールにKeyDownイベントハンドラを定義します。
<TextBox x:Name="textBx" KeyDown="textWord_KeyDown" InputScope="Search"/>
コードビハインドでcs側にKeyDownイベントハンドラを書きます。e.Keyにはどのキーが入力されたかが含まれています。この値がKey.Enterの場合に、なんらかの処理をさせるようにします。
private void textBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key.Equals(Key.Enter)) { // ここでなんらかの処理 } }
InputScopeを「Search」にしている理由
余談ですが、ソフトウェアキーボードの種類をXAMLにて変更することが可能です。デフォルトのソフトウェアキーボードの場合、右下のキーがEnterキー相当になっています。
InputScopeを「Search」にしている場合、右下のEnterキーが「検索キー」に変わります。本記事のようにEnterキーが入力されるとなんらかの処理を実行させる場合には、デフォルトのソフトウェアキーボードではなく、「なんらかの処理」に合わせたInputScopeを使用したほうが良いでしょう。
エンターキーでソフトウェア・キーボードを閉じる
private void textBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key.Equals(Key.Enter)) { // 別のコントロールのFocusメソッドを呼ぶことで // ソフトウェア・キーボードを非表示にする this.Focus(); } }