MESCIUS InputMan for WPF 3.0J > InputMan for WPF の使い方 > マスクコントロール > キーボード操作 |
このトピックでは、マスクコントロールのキーボード操作について解説します。
マスクコントロールには、次の3つの独自機能があります。
自動フォーカス移動
ExitOnLastChar プロパティを True に設定すると、入力された文字列が、書式設定により定義されたフィールドすべてに満たされると、自動的に次のコントロールへフォーカスを移動できます。
矢印キーによるフォーカス移動
ExitOnLeftRightKey プロパティを ExitOnLeftRightKey.None 以外の値に設定すると、キャレットがコントロール内のテキストの最初または最後の文字上にある状態で[→]、[←]、または[Ctrl]+[→]、[Ctrl]+[←]の各キーを押したときに、フォーカスを前後のコントロールに移動することができます。
キー入力によるフォーカス移動の検出
[→]、[←]、[Ctrl]+[→]、[Ctrl]+[←]、[Tab]、[Shift]+[Tab]の各キーを使用して、フォーカスを前後のコントロールに移動したときには、LostFocus イベントの前に KeyExit イベントが発生します。
ショートカットコマンドを使ってコントロールの機能を特定のキーに割り当てた場合、それらのキーに割り当てられていたデフォルトの機能は動作しなくなります。 また、TabAction プロパティの設定内容によって、キーボードを操作したときの動作が異なります。詳しくは、TabAction プロパティのリファレンスを参照してください。 |
WPF ブラウザアプリケーションの場合、ブラウザによってはショートカットキーとして特定のキーに対してブラウザ独自の機能が割り当てられていることがあります。この場合、コントロールのショートカットコマンドよりもブラウザのショートカットキーの動作が優先されます。 |
マスクコントロールの表示領域は、通常、リテラル文字列と入力フィールドの2種類に分かれています。
マスクコントロールのナビゲーションや選択などの操作は、リテラル文字列と入力フィールドの位置関係による影響を受けます。これらの操作に関する説明を以下にまとめます。
操作 | 説明 |
---|---|
[←] | 1つ前の非リテラル文字または行の先頭にキャレットを移動します。選択された部分がある場合は、選択が解除されてその部分の左端にキャレットが置かれます。 |
[→] | 次の非リテラル文字または行の末尾にカキャレットを移動します。選択された部分がある場合は、選択が解除されてその部分の右端にキャレットが置かれます。 |
[↑] | 列挙型フィールドの場合 列挙子の次の候補を選択します。 パターンフィールドの場合 [←]キーと同様にはたらきます。 リテラルフィールドの場合 無視されます。 |
[↓] | 列挙型フィールドの場合 列挙子の前の候補を選択します。 パターンフィールドの場合 [→]キーと同様にはたらきます。 リテラルフィールドの場合 無視されます。 |
[Ctrl]+[←] | 現在のまたは1つ前の入力フィールドの先頭か、行の先頭にキャレットを移動します。選択された部分がある場合は、選択が解除されてその部分の左端にキャレットが置かれます。 |
[Ctrl]+[→] | 次の入力フィールドの先頭または行の末尾にキャレットを移動します。選択された部分がある場合は、選択が解除されてその部分の右端にキャレットが置かれます。 |
[Ctrl]+[↑] | 列挙型フィールドで AllowDropDownOpen プロパティが True の場合は、列挙値の一覧のドロップダウン表示を切り替えます。False の場合は無視されます。 |
[Ctrl]+[↓] | 列挙型フィールドで AllowDropDownOpen プロパティが True の場合は、列挙値の一覧のドロップダウン表示を切り替えます。False の場合は無視されます。 |
[Home] | 最初の入力フィールドの先頭または行の先頭にキャレットが移動します。 |
[End] | 最後の入力フィールドの終了位置または行の末尾にキャレットを移動します。 |
[Ctrl]+[Home] | コントロール内のテキストの先頭にキャレットを移動します。 |
[Ctrl]+[End] | コントロール内のテキストの末尾にキャレットを移動します。 |
[Tab]または[Shift]+[Tab] | TabAction プロパティが TabAction.Field に設定されている場合には、タブオーダーの設定に応じてそのフォーム上の前または次のコントロールにフォーカスが移動します。TabAction プロパティが TabAction.Field に設定されている場合には、1つ前または次の入力フィールドにキャレットが移動します。最初または最後のフィールドに達した場合、タブオーダーの設定に応じてそのフォーム上の前または次のコントロールにフォーカスが移動します。 |
スピンボタンが有効になっている場合、コントロールにフォーカスがある状態でマウスホイールを操作すると、[↑]キーまたは[↓]キーを押したときと同じ動作を実現できます。 |
操作 | 説明 |
---|---|
[Shift]+[←] | 1つ前の文字を選択します。上書きモードでは、点滅しているブロックカーソルの1つ前にある文字が最初に選択されます。 |
[Shift]+[→] | 次の文字を選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字が最初に選択されます。 |
[Ctrl]+[Shift]+[←] | 現在のキャレット位置から現在または1つ前のフィールドの先頭位置まで、もしくは行の先頭までを選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字は選択されません。 |
[Ctrl]+[Shift]+[→] | 現在のキャレット位置から現在の入力フィールドの末尾まで、または行の末尾までを選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字も選択されます。 |
[Shift]+[Home] | 現在のキャレット位置から最初の非リテラル文字列の先頭まで、または行の先頭までを選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字は選択されません。 |
[Ctrl]+[Shift]+[Home] | 現在のキャレット位置から行の先頭までを選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字は選択されません。 |
[Ctrl]+[Shift]+[End] | 現在のキャレット位置から行の末尾までを選択します。上書きモードでは、点滅しているブロックカーソルの位置にある文字も選択されます。 |
[Shift]+クリック | 現在のキャレット位置からクリックした位置までを選択します。 |
ダブルクリック | ダブルクリックしたフィールドを選択します。 |
クリック+ドラッグ | マウスでドラッグした範囲を選択します。 |
[Ctrl]+クリック | コントロールに含まれるすべての内容を選択します。 |
操作 | 説明 |
---|---|
[Del] | 次の非リテラル文字を削除します。削除できるのは、入力フィールド内の文字だけです。選択された部分や上書きモードで点滅しているブロックカーソルの位置にある文字は最初に削除されます。 |
[BackSpace] | 1つ前の非リテラル文字を削除します。選択された部分は最初に削除されるので注意してください。 |
[Ctrl]+[Del] | 現在のキャレット位置から入力フィールドの最後の文字までを削除します。キャレットがリテラル文字列に位置している場合、削除はできません。選択された部分は最初に削除されるので注意してください。 |
[Ctrl]+[BackSpace] | 現在のキャレット位置と現在または1つ前の入力フィールドの先頭との間にある文字を削除します。選択された部分は最初に削除されるので注意してください。 |
[Ctrl]+[C] | 選択されたテキストをクリップボードにコピーします。 |
[Ctrl]+[V] | クリップボードのテキストをコントロールに貼り付けます。 |
[Ctrl]+[X] | 選択されたテキストを切り取り、クリップボードにコピーします。 |
[Ctrl]+[A] | コントロールに含まれるすべての内容を選択します。 |
[Ctrl]+[Z] | 編集前またはフォーカス取得時の値に戻します。 |
[Ctrl]+[Ins] | 選択されたテキストをクリップボードにコピーします。 |
[Shift]+[Del] | 選択されたテキストを切り取り、クリップボードにコピーします。SelectionLength プロパティが 0 のときは、[BackSpace]キーと同じ処理が行われます。 |
[Shift]+[Ins] | クリップボードのテキストをコントロールに貼り付けます。 |