WP TIPS に戻る

キーボードを開く・閉じる・変える

サンプルプロジェクト keyboard_open_close.zip

開く・閉じる

WP7 のキーボードは TextBox 等にフォーカスが移動したときに、自動的に開きます。
それ以外に開く方法はないようです。
逆にキーボードを閉じたいときは、TextBox からフォーカスを外すと閉じることが出来ます。

private void hide_button_Click(object sender, System.EventArgs e)
{
   // PhoneApplicationPage にフォーカス移動。
   // テキストボックスからフォーカスが外れるのでキーボードが閉じる。
   this.Focus();
}

private void visible_button_Click(object sender, System.EventArgs e)
{
   // テキストボックスにフォーカスを当てるとキーボードが閉じる。
   this.dummy_textbox.Focus();
}

キーボードを閉じないようにする

ゲームなどで、キーボードを文字の入力ではなく "コントローラ" として使用したい場合、キーボードが閉じてしまうと困る局面も出てくると思います。このようなときは、

this.dummy_textbox.LostFocus += (s, args) =>
{
   (s as TextBox).Focus();
};

とすると必ずフォーカスが TextBox 上にとどまるので、キーボードが閉じてしまうことはありません。

キーボードの種類を変える

WP7 のキーボードは TextBox.InputScope プロパティで入力方式を変えることが出来ます。
入力方式は Default, Url, Search, Digit 等50ヶほどタイプ定義されてますが、実際に用意されているのは6パターン程度です。

var scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.Digits;
var inputScope = new InputScope();
inputScope.Names.Add(scopeName);
this.dummy_textbox.InputScope = inputScope;

キーボードの入力イベント

キーボードの入力をフックするのは、入力される側の、

  • TextBox.KeyUp/KeyDown
  • TextBox.TextChanged

イベントで取得します。
キーボード Digit の数字やエンターキーなどは KeyUp/Down で取得できますが、日本語変換が入る場合("あ"など)は、KeyUp にはイベントが来ないので TextChanged でトリガして TextBox.Text プロパティで拾います。

TextChanged イベントで Text プロパティを拾う場合注意が必要です。
まず 1文字入力した場合 TextChanged イベントが 2回ほど連続発生します。
また "あ" と入力したときに Text プロパティには "あ" が入り、その後変換候補で "アカウント" を選択した場合、Text プロパティから "あ" は消え去り "アカウント" という文字列が入ります。

キーボードの代表例

  • Default
    いつも表示されるデフォルトですね。
    default.jpg

  • Digits
    数字のみを入力してもらいたいときや、ゲームの入力パッドにはいいかも。でもエンターキーがないので入力数が固定ならいいけど。
    digits.jpg

  • Url
    .com 入力がありますね。あとエンターキーの色が反転していて、最後はここを押す、というのをユーザに気づいてもらえそうですね。
    url.jpg

  • Password
    英数半角を入力してもらいたいときはこれ。
    password.jpg

  • Postalcode
    数字と記号、エンターがほしければこれ。
    postalcode.jpg

  • TelephoneNumber
    電話用ですね。
    telephonenumber.jpg