DataGrid コントロールの既定のキーボード動作とマウス動作

このトピックでは、ユーザーがキーボードとマウスを使用して、DataGrid コントロールとどのようにやりとりできるかどうかについて説明します。

DataGrid との一般的なやり取りには、ナビゲーション、選択、編集などがあります。 選択の動作は、SelectionMode および SelectionUnit プロパティに影響を受けます。 このトピックで説明されている動作を発生させる既定値は、DataGridSelectionMode.ExtendedDataGridSelectionUnit.FullRow です。 これらの値を変更すると、説明されているものとは異なる動作が発生する可能性があります。 セルが編集モードの場合、編集コントロールによって、DataGrid の標準的なキーボード動作がオーバーライドされることがあります。

既定のキーボード動作

次の表には、DataGrid の既定のキーボード動作が一覧表示されています。

キーまたはキーの組み合わせ 説明
現在のセルのすぐ下のセルにフォーカスを移動します。 フォーカスが最後の行にある場合は、↓ キーを押しても何も行われません。
現在のセルのすぐ上のセルにフォーカスを移動します。 フォーカスが最初の行にある場合は、↑ キーを押しても何も行われません。
行の前のセルにフォーカスを移動します。 フォーカスが行の最初のセルにある場合は、← キーを押しても何も行われません。
行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルにある場合は、→ キーを押しても何も行われません。
ホーム 現在の行の最初のセルにフォーカスを移動します。
End 現在の行の最後のセルにフォーカスを移動します。
PageDown 行がグループ化されていない場合は、完全に表示されている行の数だけ下にコントロールをスクロールします。 列を変更せずに、完全に表示されている最後の行にフォーカスを移動します。

行がグループ化されている場合は、列を変更せずに、DataGrid の最後の行にフォーカスを移動します。
PageUp 行がグループ化されていない場合は、完全に表示されている行の数だけ上にコントロールをスクロールします。 列を変更せずに、表示されている最初の行にフォーカスを移動します。

行がグループ化されている場合は、列を変更せずに、DataGrid の最初の行にフォーカスを移動します。
Tab 現在の行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルにある場合は、次の行の最初のセルにフォーカスを移動します。 フォーカスがコントロールの最後のセルにある場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。

現在のセルが編集モードであり、Tab キーを押すとフォーカスが現在の行から移動する場合、行に加えられた変更はすべて、フォーカスが変更される前にコミットされます。
Shift + Tab 現在の行の前のセルにフォーカスを移動します。 フォーカスが既に行の最初のセルにある場合は、前の行の最後のセルにフォーカスを移動します。 フォーカスがコントロールの最初のセルにある場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。

現在のセルが編集モードであり、Tab キーを押すとフォーカスが現在の行から移動する場合、行に加えられた変更はすべて、フォーカスが変更される前にコミットされます。
Ctrl +↓ 現在の列の最後のセルにフォーカスを移動します。
Ctrl + ↑ 現在の列の最初のセルにフォーカスを移動します。
Ctrl + → 現在の行の最後のセルにフォーカスを移動します。
Ctrl + ← 現在の行の最初のセルにフォーカスを移動します。
Ctrl</localizedText> + <localizedText>Home コントロールの最初のセルにフォーカスを移動します。
Ctrl</localizedText> + <localizedText>End コントロールの最後のセルにフォーカスを移動します。
Ctrl + PageDown PageDown と同じです。
Ctrl + PageUp PageUP と同じです。
F2 DataGrid.IsReadOnly プロパティが false で、DataGridColumn.IsReadOnly プロパティが現在の列に対して false である場合は、現在のセルをセルの編集モードにします。
Enter 現在のセルと行に対するすべての変更をコミットし、現在のセルのすぐ下にあるセルにフォーカスを移動します。 フォーカスが最後の行にある場合は、フォーカスを移動せずにすべての変更をコミットします。
ESC コントロールが編集モードの場合は、編集をキャンセルし、コントロールで加えられたすべての変更を元に戻します。 基になるデータ ソースで IEditableObject を実装している場合は、ESC キーを 2 回押すと、行全体の編集モードがキャンセルされます。
BackSpace セルを編集するときに、カーソルの前の文字を削除します。
Del セルを編集するときに、カーソルの後の文字を削除します。
Ctrl + Enter フォーカスを移動せずに、現在のセルに対するすべての変更をコミットします。
Ctrl + A SelectionModeExtended に設定されている場合は、DataGrid 内のすべての行を選択します。

選択キー

SelectionMode プロパティが Extended に設定されている場合、ナビゲーションの動作は変わりませんが、Shift キーを押しながらキーボードで移動する (Ctrl + Shift を含む) と、複数行の選択が変更されます。 ナビゲーションが開始される前に、コントロールでは現在の行がアンカー行としてマークされます。 Shift キーを押しながら移動すると、選択範囲に、アンカー行と現在の行の間のすべての行が含まれます。

次の選択キーでは、複数行の選択を変更します。

  • Shift + ↓

  • Shift + ↑

  • Shift + PageDown

  • Shift + PageUp

  • Ctrl + Shift + ↓

  • Ctrl + Shift + ↑

  • Ctrl + Shift + Home

  • Ctrl + Shift + End

既定のマウス動作

次の表には、DataGrid の既定のマウス動作が一覧表示されています。

マウス操作 説明
選択されていない行をクリックする クリックされた行を現在の行にし、クリックされたセルを現在のセルにします。
現在のセルをクリックする 現在のセルを編集モードにします。
列のヘッダー セルをドラッグする DataGrid.CanUserReorderColumns プロパティが true で、DataGridColumn.CanUserReorder プロパティが現在の列に対して true である場合は、新しい位置にドロップできるように列を移動します。
列のヘッダー区切り線をドラッグする DataGrid.CanUserResizeColumns プロパティが true で、DataGridColumn.CanUserResize プロパティが現在の列に対して true である場合は、列のサイズを変更します。
列ヘッダーの区切り線をダブルクリックする DataGrid.CanUserResizeColumns プロパティが true で、DataGridColumn.CanUserResize プロパティが現在の列に対して true である場合は、Auto サイズ変更モードを使用して、列のサイズを自動的に変更します。
列のヘッダー セルをクリックする DataGrid.CanUserSortColumns プロパティが true で、DataGridColumn.CanUserSort プロパティが現在の列に対して true である場合は、列を並べ替えます。

既に並べ替えられている列のヘッダーをクリックすると、その列の並べ替え方向が逆になります。

複数の列ヘッダーをクリックしながら Shift キーを押すと、クリックした順に複数の列で並べ替えられます。
Ctrl キーを押しながら行をクリックする SelectionModeExtended に設定されている場合は、連続していない複数行の選択を変更します。

行が既に選択されている場合は、行の選択を解除します。
Shift キーを押しながら行をクリックする SelectionModeExtended に設定されている場合は、連続する複数行の選択を変更します。
行のグループ ヘッダーをクリックする グループを展開または折りたたみます。
DataGrid の左上隅にある [すべて選択] ボタンをクリックする SelectionModeExtended に設定されている場合は、DataGrid 内のすべての行を選択します。

マウスの選択

SelectionMode プロパティが Extended に設定されている場合、Ctrl または Shift キーを押しながら行をクリックすると、複数行の選択が変更されます。

Ctrl キーを押しながら行をクリックすると、その行の選択状態が変わりますが、他のすべての行の現在の選択状態は保持されます。 隣接していない行を選択する場合は、このようにします。

Shift キーを押しながら行をクリックすると、現在の行と、クリックする前に現在の行の位置にあったアンカー行の間のすべての行が選択範囲に含まれます。 Shift キーを押しながら続けてクリックすると、現在の行は変わりますが、アンカー行は変わりません。 隣接する行の範囲を選択する場合は、このようにします。

Ctrl + Shift を組み合わせると、隣接する行の隣接していない範囲を選択できます。 これを行うには、前述のように、Shift キーを押しながらクリックして最初の範囲を選択します。 行の最初の範囲が選択された後、Ctrl キーを押しながらクリックして次の範囲の最初の行を選択し、Ctrl キーを押しながら Shift キーを押して次の範囲の最後の行をクリックします。

関連項目