方法 : Smartphone の Back キーをオーバーライドする
更新 : 2007 年 11 月
メモ : |
---|
Smartphone アプリケーション間の移動では、Back キーの機能が重要になります。ほとんどの場合、Back キーの既定の移動動作を変更することは、Smartphone のユーザー インターフェイスのガイドラインに反します。いつこの機能をオーバーライドするかは、慎重に判断してください。 |
ゲームなどの Smartphone アプリケーションでは、Back キーをカスタマイズできます。次の表に示すように、Back キーの操作は、キーの押されるコンテキストに応じて行われます。
Back キーの操作 |
コンテキスト |
---|---|
モーダル ダイアログ ボックスをキャンセルします。 |
常時。 |
ショートカット メニューをキャンセルします。 |
常時。 |
バックスペース操作を行います。 |
テキスト ボックスのような編集可能なコントロールや、編集可能なカスタム コントロールにフォーカスがあるとき。 |
z オーダーで次のウィンドウに移動します。 フォームやカスタム コントロールにフォーカスがあるときは、Back キーによって KeyPress イベントが発生します。例で示すように、このイベントを処理して、独自の機能を備えることができます。 このイベントを処理しない場合は、フォーカスが z オーダーで次のウィンドウに移動します。 |
フォーム、編集できないコントロール (オプション ボタンなど)、編集できないカスタム コントロールにフォーカスがあるとき。 |
メニュー バーがあるかどうかに関係なく、Back キーの操作は同じです。フォームに MainMenu コンポーネントが含まれている場合は、メニュー バーが存在します。
使用例
次のコード例に、Back キーのカスタム機能の実装方法を示します。フォームまたはカスタム コントロールで Back キーが押されると、KeyPress イベントが発生します。このとき、KeyChar の値は ESC キー (27) になります。イベント処理コードでは、ESC キー値が発生したかどうかを判断します。発生した場合は、Handled プロパティを true に設定して、既定の Back キーの操作をキャンセルします。イベントの引数が処理されない場合は、Back キーが z オーダーで次のウィンドウに移動します。
Visual C# のユーザーは、フォームのコンストラクタで KeyPress イベントのイベント ハンドラを定義する必要があります。
// Connect an event handler to the KeyPress event
this.KeyPress += new KeyPressEventHandler(OnKeyPress);
Private Sub keypressed(ByVal o As [Object], _
ByVal e As KeyPressEventArgs) Handles MyBase.KeyPress
' Determine if ESC key value is raised.
If e.KeyChar = ChrW(Keys.Escape) Then
' Handle the event to provide your own functionality.
e.Handled = True
' Add your event handling code here.
MessageBox.Show("Custom back key functionality.")
End If
End Sub
private void OnKeyPress(object sender, KeyPressEventArgs ke)
{
// Determine if ESC key value is pressed.
if (ke.KeyChar == (Char)Keys.Escape)
{
// Handle the event to provide functionality.
ke.Handled = true;
// Add your event handling code here.
MessageBox.Show("Back key was pressed.");
}
}
コードのコンパイル方法
この例は、次の名前空間への参照を必要とします。
参照
処理手順
方法 : Smartphone のソフト キーをオーバーライドする