Gestione del controllo DataGridView Windows Form predefinita della tastiera e mouseDefault keyboard and mouse handling in the Windows Forms DataGridView control

Le tabelle seguenti descrivono come è possibile interagire con il DataGridView controllo mediante una tastiera e mouse.The following tables describe how users can interact with the DataGridView control through a keyboard and a mouse.

Nota

Per personalizzare il comportamento della tastiera, è possibile gestire gli eventi della tastiera standard, ad esempio KeyDown.To customize keyboard behavior, you can handle standard keyboard events such as KeyDown. In modalità di modifica, tuttavia, il controllo di modificando ospitato riceve l'input da tastiera e non si verificano gli eventi di tastiera per il DataGridView controllo.In edit mode, however, the hosted editing control receives the keyboard input and the keyboard events do not occur for the DataGridView control. Per gestire gli eventi controllo di modifica, associare i gestori per il controllo di modifica in un EditingControlShowing gestore dell'evento.To handle editing control events, attach your handlers to the editing control in an EditingControlShowing event handler. In alternativa, è possibile personalizzare il comportamento della tastiera in un DataGridView sottoclasse eseguendo l'override di ProcessDialogKey e ProcessDataGridViewKey metodi.Alternatively, you can customize keyboard behavior in a DataGridView subclass by overriding the ProcessDialogKey and ProcessDataGridViewKey methods.

Gestione predefinita della tastieraDefault keyboard handling

Tasti di navigazione e la voce di baseBasic navigation and entry keys

Tasto o combinazioneKey or key combination DescrizioneDescription
Freccia GIÙDOWN ARROW Sposta lo stato attivo alla cella direttamente sotto la cella corrente.Moves the focus to the cell directly below the current cell. Se lo stato attivo è nell'ultima riga, non esegue alcuna operazione.If the focus is in the last row, does nothing.
FRECCIA SINISTRALEFT ARROW Sposta lo stato attivo alla cella nella riga precedente.Moves the focus to the previous cell in the row. Se lo stato attivo è nella prima cella nella riga, non esegue alcuna operazione.If the focus is in the first cell in the row, does nothing.
FRECCIA DESTRARIGHT ARROW Sposta lo stato attivo alla cella nella riga successiva.Moves the focus to the next cell in the row. Se lo stato attivo è nell'ultima cella nella riga, non esegue alcuna operazione.If the focus is in the last cell in the row, does nothing.
Freccia SUUP ARROW Sposta lo stato attivo per la cella immediatamente sopra la cella corrente.Moves the focus to the cell directly above the current cell. Se lo stato attivo è nella prima riga, non esegue alcuna operazione.If the focus is in the first row, does nothing.
HOMEHOME Sposta lo stato attivo alla prima cella nella riga corrente.Moves the focus to the first cell in the current row.
FINEEND Sposta lo stato attivo all'ultima cella nella riga corrente.Moves the focus to the last cell in the current row.
PGGIÙPAGE DOWN Consente di scorrere il controllo verso il basso il numero di righe visualizzate in modo completo.Scrolls the control downward by the number of rows that are fully displayed. Sposta lo stato attivo per l'ultima riga visualizzata completamente senza modificare le colonne.Moves the focus to the last fully displayed row without changing columns.
PGSUPAGE UP Consente di scorrere il controllo verso l'alto il numero di righe visualizzate in modo completo.Scrolls the control upward by the number of rows that are fully displayed. Spostare lo stato attivo alla prima riga visualizzata senza modificare le colonne.Moves focus to the first displayed row without changing columns.
TABTAB Se il StandardTab valore della proprietà è false, sposta lo stato attivo alla cella successiva nella riga corrente.If the StandardTab property value is false, moves the focus to the next cell in the current row. Se lo stato attivo è già nell'ultima cella della riga, sposta lo stato attivo alla prima cella nella riga successiva.If the focus is already in the last cell of the row, moves the focus to the first cell in the next row. Se lo stato attivo è nell'ultima cella nel controllo, sposta lo stato attivo al controllo successivo nell'ordine di tabulazione del contenitore padre.If the focus is in the last cell in the control, moves the focus to the next control in the tab order of the parent container.

Se il StandardTab valore della proprietà è true, sposta lo stato attivo al controllo successivo nell'ordine di tabulazione del contenitore padre.If the StandardTab property value is true, moves the focus to the next control in the tab order of the parent container.
MAIUSC+TABSHIFT+TAB Se il StandardTab valore della proprietà è false, sposta lo stato attivo alla cella precedente nella riga corrente.If the StandardTab property value is false, moves the focus to the previous cell in the current row. Se lo stato attivo è già nella prima cella della riga, sposta lo stato attivo all'ultima cella della riga precedente.If the focus is already in the first cell of the row, moves the focus to the last cell in the previous row. Se lo stato attivo è nella prima cella nel controllo, sposta lo stato attivo al controllo precedente nell'ordine di tabulazione del contenitore padre.If the focus is in the first cell in the control, moves the focus to the previous control in the tab order of the parent container.

Se il StandardTab valore della proprietà è true, sposta lo stato attivo al controllo precedente nell'ordine di tabulazione del contenitore padre.If the StandardTab property value is true, moves the focus to the previous control in the tab order of the parent container.
CTRL+TABCTRL+TAB Se il StandardTab valore della proprietà è false, sposta lo stato attivo al controllo successivo nell'ordine di tabulazione del contenitore padre.If the StandardTab property value is false, moves the focus to the next control in the tab order of the parent container.

Se il StandardTab valore della proprietà è true, sposta lo stato attivo alla cella successiva nella riga corrente.If the StandardTab property value is true, moves the focus to the next cell in the current row. Se lo stato attivo è già nell'ultima cella della riga, sposta lo stato attivo alla prima cella nella riga successiva.If the focus is already in the last cell of the row, moves the focus to the first cell in the next row. Se lo stato attivo è nell'ultima cella nel controllo, sposta lo stato attivo al controllo successivo nell'ordine di tabulazione del contenitore padre.If the focus is in the last cell in the control, moves the focus to the next control in the tab order of the parent container.
CTRL+MAIUSC+TABCTRL+SHIFT+TAB Se il StandardTab valore della proprietà è false, sposta lo stato attivo al controllo precedente nell'ordine di tabulazione del contenitore padre.If the StandardTab property value is false, moves the focus to the previous control in the tab order of the parent container.

Se il StandardTab valore della proprietà è true, sposta lo stato attivo alla cella precedente nella riga corrente.If the StandardTab property value is true, moves the focus to the previous cell in the current row. Se lo stato attivo è già nella prima cella della riga, sposta lo stato attivo all'ultima cella della riga precedente.If the focus is already in the first cell of the row, moves the focus to the last cell in the previous row. Se lo stato attivo è nella prima cella nel controllo, sposta lo stato attivo al controllo precedente nell'ordine di tabulazione del contenitore padre.If the focus is in the first cell in the control, moves the focus to the previous control in the tab order of the parent container.
CTRL + FRECCIACTRL+ARROW Sposta lo stato attivo all'ultima cella nella direzione della freccia.Moves the focus to the farthest cell in the direction of the arrow.
CTRL + HOMECTRL+HOME Sposta lo stato attivo alla prima cella nel controllo.Moves the focus to the first cell in the control.
CTRL + FINECTRL+END Sposta lo stato attivo all'ultima cella nel controllo.Moves the focus to the last cell in the control.
CTRL + PAGINA IN ALTO/BASSOCTRL+PAGE DOWN/UP Uguale a PGGIÙ o PGSU.Same as PAGE DOWN or PAGE UP.
F2F2 Pone la cella corrente in modalità di modifica se la EditMode valore della proprietà è EditOnF2 o EditOnKeystrokeOrF2.Puts the current cell into cell edit mode if the EditMode property value is EditOnF2 or EditOnKeystrokeOrF2.
F3F3 Ordina la colonna corrente se il DataGridViewColumn.SortMode valore della proprietà è Automatic.Sorts the current column if the DataGridViewColumn.SortMode property value is Automatic. È uguale alla selezione di intestazione di colonna corrente.It's the same as clicking the current column header. Disponibile a partire da .NET Framework 4.7.2.Available since .NET Framework 4.7.2. Per abilitare questa funzionalità, applicazioni sia come destinazione .NET Framework 4.7.2 o versioni successive oppure acconsentire in modo esplicito questi miglioramenti di utilizzo delle opzioni di AppContext.To enable this feature, applications must target .NET Framework 4.7.2 or later versions or explicitly opt into accessibility improvements using AppContext switches.
F4F4 Se la cella corrente è un DataGridViewComboBoxCell, pone la cella in modalità di modifica e visualizza l'elenco a discesa.If the current cell is a DataGridViewComboBoxCell, puts the cell into edit mode and displays the drop-down list.
ALT + FRECCIA SU/GIÙALT+UP/DOWN ARROW Se la cella corrente è un DataGridViewComboBoxCell, pone la cella in modalità di modifica e visualizza l'elenco a discesa.If the current cell is a DataGridViewComboBoxCell, puts the cell into edit mode and displays the drop-down list.
BARRA SPAZIATRICESPACE Se la cella corrente è un DataGridViewButtonCell, DataGridViewLinkCell, o DataGridViewCheckBoxCell, genera il CellClick e CellContentClick eventi.If the current cell is a DataGridViewButtonCell, DataGridViewLinkCell, or DataGridViewCheckBoxCell, raises the CellClick and CellContentClick events. Se la cella corrente è un DataGridViewButtonCell, anche preme il pulsante.If the current cell is a DataGridViewButtonCell, also presses the button. Se la cella corrente è un DataGridViewCheckBoxCell, cambia anche lo stato di selezione.If the current cell is a DataGridViewCheckBoxCell, also changes the check state.
INVIOENTER Esegue il commit di tutte le modifiche alla cella corrente e alla riga e sposta lo stato attivo alla cella direttamente sotto la cella corrente.Commits any changes to the current cell and row and moves the focus to the cell directly below the current cell. Se lo stato attivo è nell'ultima riga, esegue il commit di tutte le modifiche senza spostare lo stato attivo.If the focus is in the last row, commits any changes without moving the focus.
ESCESC Se il controllo è in modalità di modifica, Annulla la modifica.If the control is in edit mode, cancels the edit. Se il controllo non è in modalità di modifica, verranno annullate le modifiche apportate alla riga corrente se il controllo è associato a un'origine dati che supporta la modifica o la modalità virtuale è stata implementata con ambito di commit a livello di riga.If the control is not in edit mode, reverts any changes that have been made to the current row if the control is bound to a data source that supports editing or virtual mode has been implemented with row-level commit scope.
BACKSPACEBACKSPACE Elimina il carattere che precede il punto di inserimento quando si modifica una cella.Deletes the character before the insertion point when editing a cell.
DELETEDELETE Elimina il carattere dopo il punto di inserimento quando si modifica una cella.Deletes the character after the insertion point when editing a cell.
CTRL+INVIOCTRL+ENTER Esegue il commit di tutte le modifiche alla cella corrente senza spostare lo stato attivo.Commits any changes to the current cell without moving the focus. Anche le modifiche alla riga corrente se il controllo è associato a un'origine dati che supporta la modalità di modifica o virtuale è stata implementata con commit a livello di riga ambito di commit.Also commits any changes to the current row if the control is bound to a data source that supports editing or virtual mode has been implemented with row-level commit scope.
CTRL+0CTRL+0 Immette un DBNull.Value valore nella cella corrente, se la cella può essere modificata.Enters a DBNull.Value value into the current cell if the cell can be edited. Per impostazione predefinita, il valore visualizzato per un DBNull valore di cella è il valore della NullValue proprietà del DataGridViewCellStyle attiva per la cella corrente.By default, the display value for a DBNull cell value is the value of the NullValue property of the DataGridViewCellStyle in effect for the current cell.

Tasti di selezioneSelection keys

Se il MultiSelect è impostata su false e SelectionMode è impostata su CellSelect, la cella corrente usando i tasti di navigazione modifica la selezione nella nuova cella.If the MultiSelect property is set to false and the SelectionMode property is set to CellSelect, changing the current cell by using the navigation keys changes the selection to the new cell. Questo comportamento non influenzano il MAIUSC, CTRL e ALT.The SHIFT, CTRL, and ALT keys do not affect this behavior.

Se il SelectionMode è impostato su RowHeaderSelect o ColumnHeaderSelect, lo stesso comportamento si verifica, ma con le seguenti aggiunte.If the SelectionMode is set to RowHeaderSelect or ColumnHeaderSelect, the same behavior occurs but with the following additions.

Tasto o combinazioneKey or key combination DescrizioneDescription
MAIUSC + BARRA SPAZIATRICESHIFT+SPACEBAR Seleziona l'intera riga o colonna (come fare clic sull'intestazione di riga o colonna).Selects the full row or column (the same as clicking the row or column header).
chiave di navigazione (tasto di direzione, PGSU/PGGIÙ, HOME, fine)navigation key (arrow key, PAGE UP/DOWN, HOME, END) Se è selezionata un'intera riga o colonna, modificare la cella corrente a una nuova riga o colonna la selezione si sposta nella nuova riga o colonna (a seconda della modalità di selezione).If a full row or column is selected, changing the current cell to a new row or column moves the selection to the full new row or column (depending on the selection mode).

Se MultiSelect è impostato su false e SelectionMode è impostato su FullRowSelect o FullColumnSelect, modificare la cella corrente a una nuova riga o colonna usando la tastiera, la selezione si sposta nella nuova riga o colonna.If MultiSelect is set to false and SelectionMode is set to FullRowSelect or FullColumnSelect, changing the current cell to a new row or column by using the keyboard moves the selection to the full new row or column. Questo comportamento non influenzano il MAIUSC, CTRL e ALT.The SHIFT, CTRL, and ALT keys do not affect this behavior.

Se MultiSelect è impostato su true, non modifica il comportamento di navigazione, ma si sposta con la tastiera tenendo premuto il tasto MAIUSC (CTRL + MAIUSC compreso) viene modificata la selezione di celle.If MultiSelect is set to true, the navigation behavior does not change, but navigating with the keyboard while pressing SHIFT (including CTRL+SHIFT) will modify a multi-cell selection. Prima dello spostamento, il controllo Contrassegna la cella corrente come una cella di aggancio.Before navigation begins, the control marks the current cell as an anchor cell. Quando si Esplora premuto il tasto MAIUSC, la selezione include tutte le celle tra la cella di aggancio e la cella corrente.When you navigate while pressing SHIFT, the selection includes all cells between the anchor cell and the current cell. Le altre celle nel controllo rimane selezionate se sono già selezionate, ma potrebbero essere deselezionate se la navigazione da tastiera li inserisce temporaneamente tra la cella di aggancio e la cella corrente.Other cells in the control will remain selected if they were already selected, but they may become unselected if the keyboard navigation temporarily puts them between the anchor cell and the current cell.

Se MultiSelect è impostato su true e SelectionMode è impostato su FullRowSelect o FullColumnSelect, il comportamento delle cella di aggancio cella corrente è uguale, ma solo righe o colonne intere vengono selezionate o deselezionate.If MultiSelect is set to true and SelectionMode is set to FullRowSelect or FullColumnSelect, the behavior of the anchor cell and current cell is the same, but only full rows or columns become selected or unselected.

Gestione predefinita del mouseDefault mouse handling

Gestione di base del mouseBasic mouse handling

Nota

Scegliere sempre una cella con il pulsante sinistro del mouse cambia la cella corrente.Clicking a cell with the left mouse button always changes the current cell. Fare clic su una cella con il pulsante destro del mouse apre un menu di scelta rapida, quando diventano disponibili.Clicking a cell with the right mouse button opens a shortcut menu, when one is available.

Azione del mouseMouse action DescrizioneDescription
Selezione del pulsante sinistro del mouseLeft mouse button down Rende la cella selezionata la cella corrente e genera il DataGridView.CellMouseDown evento.Makes the clicked cell the current cell, and raises the DataGridView.CellMouseDown event.
Rilascio del pulsante sinistro del mouseLeft mouse button up Genera l'evento DataGridView.CellMouseUp.Raises the DataGridView.CellMouseUp event
Fare clic su pulsante sinistro del mouseLeft mouse button click Genera il DataGridView.CellClick e DataGridView.CellMouseClick eventiRaises the DataGridView.CellClick and DataGridView.CellMouseClick events
Selezione del pulsante sinistro del mouse e trascinare in una cella di intestazione di colonnaLeft mouse button down, and drag on a column header cell Se il DataGridView.AllowUserToOrderColumns proprietà true, la colonna viene spostata in modo che possono essere eliminato in una nuova posizione.If the DataGridView.AllowUserToOrderColumns property is true, moves the column so that it can be dropped into a new position.

Selezione del mouseMouse selection

Nessun comportamento di selezione è associato con il pulsante centrale del mouse o la rotellina del mouse.No selection behavior is associated with the middle mouse button or the mouse wheel.

Se il MultiSelect è impostata su false e SelectionMode è impostata su CellSelect, verifica quanto segue.If the MultiSelect property is set to false and the SelectionMode property is set to CellSelect, the following behavior occurs.

Azione del mouseMouse action DescrizioneDescription
Fare clic sul pulsante sinistro del mouseClick left mouse button Se l'utente fa clic su una cella, seleziona solo la cella corrente.Selects only the current cell if the user clicks a cell. Nessun comportamento di selezione se l'utente fa clic su un'intestazione di riga o colonna.No selection behavior if the user clicks a row or column header.
Scegliere il pulsante destro del mouseClick right mouse button Visualizza un menu di scelta rapida se è disponibile.Displays a shortcut menu if one is available.

Lo stesso comportamento si verifica quando il SelectionMode è impostato su RowHeaderSelect o ColumnHeaderSelect, ad eccezione del fatto che, a seconda della modalità di selezione, fare clic su un'intestazione di riga o colonna verrà selezionare l'intera riga o colonna e impostare la cella corrente alla prima cella nella riga o colonna.The same behavior occurs when the SelectionMode is set to RowHeaderSelect or ColumnHeaderSelect, except that, depending on the selection mode, clicking a row or column header will select the full row or column and set the current cell to the first cell in the row or column.

Se SelectionMode è impostato su FullRowSelect o FullColumnSelect, facendo clic su qualsiasi cella di una riga o colonna verrà selezionata l'intera riga o colonna.If SelectionMode is set to FullRowSelect or FullColumnSelect, clicking any cell in a row or column will select the full row or column.

Se MultiSelect è impostato su true, fare clic su una cella tenendo premuto CTRL o MAIUSC viene modificata la selezione di celle.If MultiSelect is set to true, clicking a cell while pressing CTRL or SHIFT will modify a multi-cell selection.

Quando si fa clic su una cella tenendo premuto il tasto CTRL, la cella viene modificato lo stato di selezione mentre tutte le altre celle mantengono lo stato di selezione corrente.When you click a cell while pressing CTRL, the cell will change its selection state while all other cells retain their current selection state.

Quando si fa clic su una cella o una serie di celle tenendo premuto il tasto MAIUSC, la selezione include tutte le celle tra la cella corrente e una cella di aggancio si trova in corrispondenza della posizione della cella corrente prima del primo clic.When you click a cell or a series of cells while pressing SHIFT, the selection includes all cells between the current cell and an anchor cell located at the position of the current cell before the first click. Facendo clic e trascina il puntatore su più celle, la cella di aggancio è la cella selezionata all'inizio dell'operazione di trascinamento.When you click and drag the pointer across multiple cells, the anchor cell is the cell clicked at the beginning of the drag operation. Si seleziona il tasto MAIUSC modifica la cella corrente, ma non la cella di aggancio.Subsequent clicks while pressing SHIFT change the current cell, but not the anchor cell. Le altre celle nel controllo rimane selezionate se sono già selezionate, ma potrebbero essere deselezionate se lo spostamento del mouse li inserisce temporaneamente tra la cella di aggancio e la cella corrente.Other cells in the control will remain selected if they were already selected, but they may become unselected if mouse navigation temporarily puts them between the anchor cell and the current cell.

Se MultiSelect è impostato su true e SelectionMode è impostato su RowHeaderSelect o ColumnHeaderSelect, fare clic su un'intestazione di riga o colonna (a seconda della modalità di selezione) tenendo premuto il tasto MAIUSC viene modificata una selezione esistente di intere righe o colonne se tali un selezione esiste.If MultiSelect is set to true and SelectionMode is set to RowHeaderSelect or ColumnHeaderSelect, clicking a row or column header (depending on the selection mode) while pressing SHIFT will modify an existing selection of full rows or columns if such a selection exists. In caso contrario, verrà deselezionarla e avvia una nuova selezione di righe o colonne intere.Otherwise, it will clear the selection and start a new selection of full rows or columns. Fare clic su un'intestazione di riga o colonna tenendo premuto il tasto CTRL, può tuttavia, aggiungere o rimuovere la riga selezionata o la colonna dalla selezione corrente senza modificare in altro modo la selezione corrente.Clicking a row or column header while pressing CTRL, however, will add or remove the clicked row or column from the current selection without otherwise modifying the current selection.

Se MultiSelect è impostato su true e SelectionMode è impostato su FullRowSelect o FullColumnSelect, facendo clic su una cella tenendo premuto il tasto MAIUSC o CTRL si comporta allo stesso modo, ad eccezione che solo intere righe e colonne sono interessate.If MultiSelect is set to true and SelectionMode is set to FullRowSelect or FullColumnSelect, clicking a cell while pressing SHIFT or CTRL behaves the same way except that only full rows and columns are affected.

Vedere ancheSee also

DataGridView
Controllo DataGridViewDataGridView Control