DataGridView コントロールでのキーボードとマウスの既定の動作
以下の表では、ユーザーがキーボードとマウスを使用して DataGridView コントロールをどのように操作できるかについて説明します。
注意
キーボードの動作をカスタマイズするには、KeyDown などの標準のキーボード イベントを処理します。 しかし、編集モードでは、ホストされる編集コントロールでキーボード入力が受け取られ、DataGridView コントロールに対してキーボード イベントは発生しません。 編集コントロール イベントを処理するには、ハンドラーを EditingControlShowing イベント ハンドラーの編集コントロールにアタッチします。 または、ProcessDialogKey および ProcessDataGridViewKey メソッドをオーバーライドして、DataGridView サブクラスのキーボード動作をカスタマイズすることもできます。
既定のキーボード処理
基本的なナビゲーションおよび入力キー
キーまたはキーの組み合わせ | 説明 |
---|---|
下矢印 | 現在のセルのすぐ下のセルにフォーカスを移動します。 フォーカスが最後の行にある場合は、何も行われません。 |
← キー | 行の前のセルにフォーカスを移動します。 フォーカスが行の最初のセルにある場合は、何も行われません。 |
→ キー | 行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルにある場合は、何も行われません。 |
上矢印 | 現在のセルのすぐ上のセルにフォーカスを移動します。 フォーカスが最初の行にある場合は、何も行われません。 |
Home | 現在の行の最初のセルにフォーカスを移動します。 |
End | 現在の行の最後のセルにフォーカスを移動します。 |
Page down | 完全に表示されている行の数だけ下にコントロールをスクロールします。 列を変更せずに、完全に表示されている最後の行にフォーカスを移動します。 |
Page up | 完全に表示されている行の数だけ上にコントロールをスクロールします。 列を変更せずに、表示されている最初の行にフォーカスを移動します。 |
Tab | StandardTab プロパティ値が false の場合は、現在の行の次のセルにフォーカスを移動します。 フォーカスが既に行の最後のセルにある場合は、次の行の最初のセルにフォーカスを移動します。 フォーカスがコントロールの最後のセルにある場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。StandardTab プロパティ値が true の場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。 |
Shift + Tab | StandardTab プロパティ値が false の場合は、現在の行の前のセルにフォーカスを移動します。 フォーカスが既に行の最初のセルにある場合は、前の行の最後のセルにフォーカスを移動します。 フォーカスがコントロールの最初のセルにある場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。StandardTab プロパティ値が true の場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。 |
Ctrl + Tab | StandardTab プロパティ値が false の場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。StandardTab プロパティ値が true の場合は、現在の行の次のセルにフォーカスを移動します。 フォーカスが既に行の最後のセルにある場合は、次の行の最初のセルにフォーカスを移動します。 フォーカスがコントロールの最後のセルにある場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。 |
Ctrl + Shift + Tab | StandardTab プロパティ値が false の場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。StandardTab プロパティ値が true の場合は、現在の行の前のセルにフォーカスを移動します。 フォーカスが既に行の最初のセルにある場合は、前の行の最後のセルにフォーカスを移動します。 フォーカスがコントロールの最初のセルにある場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。 |
Ctrl + 方向キー | 矢印の方向にある最も遠いセルにフォーカスを移動します。 |
Ctrl + Home | コントロールの最初のセルにフォーカスを移動します。 |
Ctrl + End | コントロールの最後のセルにフォーカスを移動します。 |
Ctrl + Page down/up | Page down または Page up と同じです。 |
F2 | EditMode プロパティ値が EditOnF2 または EditOnKeystrokeOrF2 の場合は、現在のセルをセル編集モードにします。 |
F3 | DataGridViewColumn.SortMode プロパティ値が Automatic の場合は、現在の列を並べ替えます。 これは、現在の列ヘッダーをクリックした場合と同じです。 .NET Framework 4.7.2 以降で利用できます。 この機能を有効にするには、アプリケーションで .NET Framework 4.7.2 以降のバージョンをターゲットにするか、AppContext スイッチを使用してアクセシビリティの強化を明示的に選択する必要があります。 |
F4 | 現在のセルが DataGridViewComboBoxCell の場合は、セルを編集モードにし、ドロップダウン リストを表示します。 |
Alt + 上または下方向キー | 現在のセルが DataGridViewComboBoxCell の場合は、セルを編集モードにし、ドロップダウン リストを表示します。 |
Alt + 左または右方向キー | 現在のセルの列の幅を増減します。 |
Space | 現在のセルが DataGridViewButtonCell、DataGridViewLinkCell、または DataGridViewCheckBoxCellの場合は、CellClick および CellContentClick イベントを発生させます。 現在のセルが DataGridViewButtonCell の場合は、ボタンも押します。 現在のセルが DataGridViewCheckBoxCell の場合は、チェック状態も変更します。 |
Enter | 現在のセルと行に対するすべての変更をコミットし、現在のセルのすぐ下にあるセルにフォーカスを移動します。 フォーカスが最後の行にある場合は、フォーカスを移動せずにすべての変更をコミットします。 |
Esc | コントロールが編集モードである場合は、編集をキャンセルします。 コントロールが編集モードでない場合は、編集をサポートするデータ ソースにコントロールがバインドされているか、行レベルのコミット スコープで仮想モードが実装されている場合に、現在の行に加えられたすべての変更を元に戻します。 |
バックスペース | セルの編集時に、カーソル位置の前の文字を削除します。 |
削除 | セルの編集時に、カーソル位置の後の文字を削除します。 |
Ctrl + Enter | フォーカスを移動せずに、現在のセルに対するすべての変更をコミットします。 また、編集をサポートするデータ ソースにコントロールがバインドされているか、行レベルのコミット スコープで仮想モードが実装されている場合は、現在の行に対するすべての変更をコミットします。 |
Ctrl + 0 | セルを編集できる場合は、現在のセルに DBNull.Value 値を入力します。 既定では、DBNull セル値の表示値は、現在のセルに対して有効になっている DataGridViewCellStyle の NullValue プロパティの値です。 |
選択キー
MultiSelect プロパティが false
に設定されていて、SelectionMode プロパティが CellSelect に設定されている場合、ナビゲーション キーを使用して現在のセルを変更すると、選択範囲が新しいセルに変わります。 Shift、Ctrl、Alt キーは、この動作には影響しません。
SelectionMode が RowHeaderSelect または ColumnHeaderSelect に設定されている場合は、同じ動作が発生しますが、以下が追加されます。
キーまたはキーの組み合わせ | 説明 |
---|---|
Shift + Space キー | 行または列全体を選択します (行または列のヘッダーをクリックした場合と同じ)。 |
ナビゲーション キー (方向キー、Page up/down、Home、End) | 行または列全体が選択されている場合、現在のセルを新しい行または列に変更すると、(選択モードに応じて) 選択範囲が新しい行または列全体に移動します。 |
MultiSelect が false
に設定されており、SelectionMode が FullRowSelect または FullColumnSelect に設定されている場合、キーボードを使用して現在のセルを新しい行または列に変更すると、選択範囲が新しい行または列全体に移動します。 Shift、Ctrl、Alt キーは、この動作には影響しません。
MultiSelect が true
に設定されている場合、ナビゲーションの動作は変わりませんが、Shift キーを押しながらキーボードで移動する (Ctrl + Shift を含む) と、複数セルの選択が変更されます。 ナビゲーションが開始される前に、コントロールで現在のセルがアンカー セルとしてマークされます。 Shift キーを押しながら移動すると、選択範囲に、アンカー セルと現在のセルの間のすべてのセルが含まれます。 コントロール内のその他のセルは、既に選択されている場合は選択されたままになりますが、キーボード ナビゲーションによってアンカー セルと現在のセルの間に一時的に配置されると、選択解除された状態になることがあります。
MultiSelect が true
に設定されており、SelectionMode が FullRowSelect または FullColumnSelect に設定されている場合、アンカー セルと現在のセルの動作は同じですが、行または列全体のみが選択または選択解除された状態になります。
既定のマウス処理
基本的なマウス処理
注意
マウスの左ボタンを使用してセルをクリックすると、常に現在のセルが変更されます。 マウスの右ボタンを使用してセルをクリックすると、ショートカット メニューが表示されます (使用可能な場合)。
マウス操作 | 説明 |
---|---|
マウスの左ボタンを押す | クリックされたセルを現在のセルにし、DataGridView.CellMouseDown イベントを発生させます。 |
マウスの左ボタンを放す | DataGridView.CellMouseUp イベントを発生させます。 |
マウスの左ボタンのクリック | DataGridView.CellClick および DataGridView.CellMouseClick イベントを発生させます |
マウスの左ボタンを押して、列ヘッダー セルにドラッグする | DataGridView.AllowUserToOrderColumns プロパティが true の場合は、新しい位置にドロップできるように列を移動します。 |
マウスの選択
マウスの中央ボタンまたはマウス ホイールには、選択動作が関連付けられていません。
MultiSelect プロパティが false
に設定されており、SelectionMode プロパティが CellSelect に設定されている場合は、次の動作が発生します。
マウス操作 | 説明 |
---|---|
Click | ユーザーがセルをクリックした場合に、現在のセルのみを選択します。 ユーザーが行または列ヘッダーをクリックした場合の選択の動作はありません。 |
右クリック | 使用できる場合は、ショートカット メニューを表示します。 |
SelectionMode が RowHeaderSelect または ColumnHeaderSelect に設定されている場合、同じ動作が発生します。ただし、選択モードに応じて、行または列ヘッダーをクリックすると、行または列全体が選択され、現在のセルが行または列の最初のセルに設定されます。
SelectionMode が FullRowSelect または FullColumnSelect に設定されている場合、行または列の任意のセルをクリックすると、行または列全体が選択されます。
MultiSelect が true
に設定されている場合、Ctrl または Shift キーを押しながらセルをクリックすると、複数セルの選択が変更されます。
Ctrl キーを押しながらセルをクリックすると、その選択状態が変わりますが、他のすべてのセルの現在の選択状態は保持されます。
Shift キーを押しながらセルまたは一連のセルをクリックすると、選択範囲には、現在のセルと、最初のクリックの前に現在のセルの位置にあったアンカー セルの間のすべてのセルが含まれます。 ポインターをクリックして複数のセルにドラッグすると、アンカー セルはドラッグ操作の開始時にクリックされたセルになります。 Shift キーを押しながら続けてクリックすると、現在のセルは変わりますが、アンカー セルは変わりません。 コントロール内のその他のセルは、既に選択されている場合は選択されたままになりますが、マウス ナビゲーションによってアンカー セルと現在のセルの間に一時的に配置されると、選択解除された状態になることがあります。
MultiSelect が true
に設定されていて、SelectionMode が RowHeaderSelect または ColumnHeaderSelect に設定されている場合、Shift キーを押しながら (選択モードに応じて) 行または列ヘッダーをクリックすると、行または列全体の既存の選択範囲が変更されます (そのような選択範囲が存在する場合)。 それ以外の場合は、選択をクリアし、行または列全体の新しい選択を開始します。 しかし、Ctrl キーを押しながら行または列ヘッダーをクリックすると、現在の選択範囲を変更せずに、クリックされた行または列が現在の選択範囲に対して追加または削除されます。
MultiSelect が true
に設定されていて、SelectionMode が FullRowSelect または FullColumnSelect に設定されている場合は、Shift または Ctrl キーを押しながらセルをクリックすると、同じように動作します。ただし、影響を受けるのは行と列全体のみとなります。
関連項目
.NET Desktop feedback