#setlinebreak(on);
[[WP TIPS に戻る>wp7/tips]]
*キーボードを開く・閉じる・変える [#uc3fb142]
サンプルプロジェクト [[Panorama_slide.zip>https://skydrive.live.com/redir.aspx?cid=793b87c06d2f0cd5&resid=793B87C06D2F0CD5!1909&parid=793B87C06D2F0CD5!223]]
サンプルプロジェクト [[keyboard_open_close.zip>https://skydrive.live.com/redir.aspx?cid=793b87c06d2f0cd5&resid=793B87C06D2F0CD5!1910&parid=793B87C06D2F0CD5!223]]
**開く・閉じる [#he4ac033]
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();
}
**キーボードを閉じないようにする [#lf26a0e1]
ゲームなどで、キーボードを文字の入力ではなく "コントローラ" として使用したい場合、キーボードが閉じてしまうと困る局面も出てくると思います。このようなときは、
this.dummy_textbox.LostFocus += (s, args) =>
{
(s as TextBox).Focus();
};
とすると必ずフォーカスが TextBox 上にとどまるので、キーボードが閉じてしまうことはありません。
**キーボードの種類を変える [#sf92f1c7]
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;
**キーボードの入力イベント [#n13e1475]
キーボードの入力をフックするのは、入力される側の、
-TextBox.KeyUp/KeyDown
-TextBox.TextChanged
イベントで取得します。
キーボード Digit の数字やエンターキーなどは KeyUp/Down で取得できますが、日本語変換が入る場合("あ"など)は、KeyUp にはイベントが来ないので TextChanged でトリガして TextBox.Text プロパティで拾います。
TextChanged イベントで Text プロパティを拾う場合注意が必要です。
まず 1文字入力した場合 TextChanged イベントが 2回ほど連続発生します。
また "あ" と入力したときに Text プロパティには "あ" が入り、その後変換候補で "アカウント" を選択した場合、Text プロパティから "あ" は消え去り "アカウント" という文字列が入ります。
**キーボードの代表例 [#s32903a1]
-Default
いつも表示されるデフォルトですね。
#ref(default.jpg,nolink);
&br;
-Digits
数字のみを入力してもらいたいときや、ゲームの入力パッドにはいいかも。でもエンターキーがないので入力数が固定ならいいけど。
#ref(digits.jpg,nolink);
&br;
-Url
.com 入力がありますね。あとエンターキーの色が反転していて、最後はここを押す、というのをユーザに気づいてもらえそうですね。
#ref(url.jpg,nolink);
&br;
-Password
英数半角を入力してもらいたいときはこれ。
#ref(password.jpg,nolink);
&br;
-Postalcode
数字と記号、エンターがほしければこれ。
#ref(postalcode.jpg,nolink);
&br;
-TelephoneNumber
電話用ですね。
#ref(telephonenumber.jpg,nolink);
&br;