次の表では、ユーザーがキーボードとマウスを使用して DataGridView コントロールを操作する方法について説明します。
注
キーボードの動作をカスタマイズするには、 KeyDownなどの標準的なキーボード イベントを処理できます。 ただし、編集モードでは、ホストされている編集コントロールはキーボード入力を受け取り、 DataGridView コントロールのキーボード イベントは発生しません。 編集コントロール イベントを処理するには、 EditingControlShowing イベント ハンドラーの編集コントロールにハンドラーをアタッチします。 または、DataGridViewメソッドとProcessDialogKeyメソッドをオーバーライドすることで、ProcessDataGridViewKey サブクラスのキーボード動作をカスタマイズすることもできます。
既定のキーボード処理
基本的なナビゲーション キーとエントリ キー
キーまたはキーの組み合わせ | 説明 |
---|---|
下矢印 | 現在のセルのすぐ下のセルにフォーカスを移動します。 フォーカスが最後の行にある場合、何もしません。 |
左矢印 | 行の前のセルにフォーカスを移動します。 行の最初のセルにフォーカスがある場合、何も行われません。 |
右矢印 | 行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルにある場合、何も行われません。 |
上矢印 | 現在のセルのすぐ上のセルにフォーカスを移動します。 フォーカスが最初の行にある場合、何も行われません。 |
ホーム | 現在の行の最初のセルにフォーカスを移動します。 |
終了 | 現在の行の最後のセルにフォーカスを移動します。 |
ページダウン | コントロールを、完全に表示される行数だけ下にスクロールします。 列を変更せずに、完全に表示された最後の行にフォーカスを移動します。 |
ページアップ | コントロールを、完全に表示される行数だけ上にスクロールします。 列を変更せずに、最初に表示される行にフォーカスを移動します。 |
タブ |
StandardTabプロパティ値がfalse 場合は、現在の行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルに既にある場合は、フォーカスを次の行の最初のセルに移動します。 フォーカスがコントロールの最後のセルにある場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。StandardTab プロパティの値が true 場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。 |
+ タブ |
StandardTab プロパティの値がfalse されている場合は、現在の行の前のセルにフォーカスを移動します。 フォーカスが行の最初のセルに既にある場合は、前の行の最後のセルにフォーカスを移動します。 フォーカスがコントロールの最初のセルにある場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。StandardTab プロパティの値が true されている場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。 |
+ タブ |
StandardTab プロパティの値がfalse 場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。StandardTabプロパティ値が true 場合は、現在の行の次のセルにフォーカスを移動します。 フォーカスが行の最後のセルに既にある場合は、フォーカスを次の行の最初のセルに移動します。 フォーカスがコントロールの最後のセルにある場合は、親コンテナーのタブ オーダーで次のコントロールにフォーカスを移動します。 |
+ + タブ |
StandardTab プロパティの値がfalse されている場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。StandardTab プロパティの値が true されている場合は、現在の行の前のセルにフォーカスを移動します。 フォーカスが行の最初のセルに既にある場合は、前の行の最後のセルにフォーカスを移動します。 フォーカスがコントロールの最初のセルにある場合は、親コンテナーのタブ オーダーで前のコントロールにフォーカスを移動します。 |
Ctrl + 矢印 | 矢印の方向の最も遠いセルにフォーカスを移動します。 |
+ ホーム | コントロールの最初のセルにフォーカスを移動します。 |
+ 終わり | コントロール内の最後のセルにフォーカスを移動します。 |
+ ページダウン/アップ | ページダウンまたはページアップと同じです。 |
F2 | EditModeプロパティ値がEditOnF2またはEditOnKeystrokeOrF2の場合、現在のセルをセル編集モードにします。 |
F3 | DataGridViewColumn.SortMode プロパティ値がAutomaticされている場合は、現在の列を並べ替えます。 これは、現在の列ヘッダーをクリックするのと同じです。 .NET Framework 4.7.2 以降で使用できます。 この機能を有効にするには、アプリケーションで .NET Framework 4.7.2 以降のバージョンをターゲットにするか、AppContext スイッチを使用してアクセシビリティの向上を明示的に選択する必要があります。 |
F4 | 現在のセルが DataGridViewComboBoxCellの場合は、セルを編集モードにしてドロップダウン リストを表示します。 |
Alt + 上/下矢印 | 現在のセルが DataGridViewComboBoxCellの場合は、セルを編集モードにしてドロップダウン リストを表示します。 |
Alt + 左/右矢印 | 現在のセルの列の幅を増減します。 |
スペース | 現在のセルが DataGridViewButtonCell、 DataGridViewLinkCell、または DataGridViewCheckBoxCellの場合は、 CellClick イベントと CellContentClick イベントが発生します。 現在のセルが DataGridViewButtonCellの場合は、ボタンも押します。 現在のセルが DataGridViewCheckBoxCellの場合は、チェックの状態も変更します。 |
を入力 | 現在のセルと行に対する変更をコミットし、現在のセルのすぐ下のセルにフォーカスを移動します。 フォーカスが最後の行にある場合は、フォーカスを移動せずに変更をコミットします。 |
Esc キー | コントロールが編集モードの場合は、編集を取り消します。 コントロールが編集モードでない場合は、編集をサポートするデータ ソースにコントロールがバインドされている場合、または行レベルのコミット スコープで仮想モードが実装されている場合、現在の行に加えられた変更を元に戻します。 |
バックスペース | セルを編集するときに、カーソルの位置の前の文字を削除しました。 |
削除 | セルを編集するときに、挿入ポイントの後の文字を削除します。 |
Ctrl + エンター | フォーカスを移動せずに、現在のセルへの変更をコミットします。 また、編集をサポートするデータ ソースにコントロールがバインドされている場合、または行レベルのコミット スコープを使用して仮想モードが実装されている場合は、現在の行に対する変更もコミットします。 |
Ctrl + 0 | セルを編集できる場合は、現在のセルに DBNull.Value 値を入力します。 既定では、DBNull セル値の表示値は、現在のセルに対して有効なNullValueのDataGridViewCellStyle プロパティの値です。 |
選択キー
MultiSelect プロパティが false
に設定され、SelectionMode プロパティが CellSelect に設定されている場合、ナビゲーション キーを使用して現在のセルを変更すると、選択範囲が新しいセルに変更されます。
Shift キー、Ctrl キー、Alt キーは、この動作には影響しません。
SelectionModeがRowHeaderSelectまたはColumnHeaderSelectに設定されている場合、同じ動作が発生しますが、次の追加が行われます。
キーまたはキーの組み合わせ | 説明 |
---|---|
Shift + スペースバー | 行または列全体を選択します (行ヘッダーまたは列ヘッダーをクリックする場合と同じです)。 |
ナビゲーション キー (方向キー、 ページの上/下、 ホーム、 終了) | 行または列全体が選択されている場合、現在のセルを新しい行または列に変更すると、選択モードに応じて、選択範囲が新しい行または列全体に移動します。 |
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 に設定されている場合、次の動作が発生します。
マウス アクション | 説明 |
---|---|
クリック | ユーザーがセルをクリックした場合は、現在のセルのみを選択します。 ユーザーが行ヘッダーまたは列ヘッダーをクリックした場合、選択動作はありません。 |
右クリック | ショートカット メニューが使用可能な場合は、ショートカット メニューを表示します。 |
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 キーを押しながらセルをクリックすると、完全な行と列のみが影響を受ける点が異なります。
こちらも参照ください
- DataGridView
- DataGridView コントロール
.NET Desktop feedback