Comportamento predefinito della tastiera e del mouse con il controllo DataGridView

Le tabelle seguenti descrivono come gli utenti possono interagire con il DataGridView controllo tramite una tastiera e un mouse.

Nota

Per personalizzare il comportamento della tastiera, è possibile gestire eventi della tastiera standard, KeyDownad esempio . In modalità di modifica, tuttavia, il controllo di modifica ospitato riceve l'input della tastiera e gli eventi della tastiera non si verificano per il DataGridView controllo. Per gestire gli eventi di controllo di modifica, collegare i gestori al controllo di modifica in un EditingControlShowing gestore eventi. In alternativa, è possibile personalizzare il comportamento della tastiera in una DataGridView sottoclasse eseguendo l'override dei ProcessDialogKey metodi e ProcessDataGridViewKey .

Gestione predefinita della tastiera

Tasti di spostamento e immissione di base

Tasto o della combinazione Descrizione
Freccia GIÙ Sposta lo stato attivo sulla cella direttamente sotto la cella corrente. Se lo stato attivo si trova nell'ultima riga, non esegue alcuna operazione.
Freccia SINISTRA Sposta lo stato attivo sulla cella precedente della riga. Se lo stato attivo si trova nella prima cella della riga, non esegue alcuna operazione.
Freccia DESTRA Sposta lo stato attivo sulla cella successiva della riga. Se lo stato attivo si trova nell'ultima cella della riga, non esegue alcuna operazione.
Freccia in su Sposta lo stato attivo sulla cella direttamente sopra la cella corrente. Se lo stato attivo si trova nella prima riga, non esegue alcuna operazione.
Home Sposta lo stato attivo sulla prima cella della riga corrente.
Fine Sposta lo stato attivo sull'ultima cella della riga corrente.
Pagina verso il basso Scorre il controllo verso il basso in base al numero di righe visualizzate completamente. Sposta lo stato attivo sull'ultima riga completamente visualizzata senza modificare le colonne.
Pagina su Scorre il controllo verso l'alto in base al numero di righe completamente visualizzate. Sposta lo stato attivo sulla prima riga visualizzata senza modificare le colonne.
Tab Se il valore della StandardTab proprietà è false, sposta lo stato attivo sulla cella successiva nella riga corrente. Se lo stato attivo si trova già nell'ultima cella della riga, sposta lo stato attivo sulla prima cella della riga successiva. Se lo stato attivo si trova nell'ultima cella del controllo, sposta lo stato attivo sul controllo successivo nell'ordine di tabulazione del contenitore padre.

Se il valore della StandardTab proprietà è true, sposta lo stato attivo sul controllo successivo nell'ordine di tabulazione del contenitore padre.
MAIUSC + Tab Se il valore della StandardTab proprietà è false, sposta lo stato attivo sulla cella precedente nella riga corrente. Se lo stato attivo si trova già nella prima cella della riga, sposta lo stato attivo sull'ultima cella della riga precedente. Se lo stato attivo si trova nella prima cella del controllo, sposta lo stato attivo sul controllo precedente nell'ordine di tabulazione del contenitore padre.

Se il valore della StandardTab proprietà è true, sposta lo stato attivo sul controllo precedente nell'ordine di tabulazione del contenitore padre.
CTRL + TAB Se il valore della StandardTab proprietà è false, sposta lo stato attivo sul controllo successivo nell'ordine di tabulazione del contenitore padre.

Se il valore della StandardTab proprietà è true, sposta lo stato attivo sulla cella successiva nella riga corrente. Se lo stato attivo si trova già nell'ultima cella della riga, sposta lo stato attivo sulla prima cella della riga successiva. Se lo stato attivo si trova nell'ultima cella del controllo, sposta lo stato attivo sul controllo successivo nell'ordine di tabulazione del contenitore padre.
CTRL + MAIUSC + TAB Se il valore della StandardTab proprietà è false, sposta lo stato attivo sul controllo precedente nell'ordine di tabulazione del contenitore padre.

Se il valore della StandardTab proprietà è true, sposta lo stato attivo sulla cella precedente nella riga corrente. Se lo stato attivo si trova già nella prima cella della riga, sposta lo stato attivo sull'ultima cella della riga precedente. Se lo stato attivo si trova nella prima cella del controllo, sposta lo stato attivo sul controllo precedente nell'ordine di tabulazione del contenitore padre.
Freccia CTRL + Sposta lo stato attivo sulla cella più lontana nella direzione della freccia.
CTRL + Home Sposta lo stato attivo sulla prima cella del controllo.
CTRL + Fine Sposta lo stato attivo sull'ultima cella del controllo.
CTRL + PAGINA GIÙ/SU Uguale a Pagina giù o Pagina su.
F2 Inserisce la cella corrente in modalità di modifica della cella se il valore della EditMode proprietà è EditOnF2 o EditOnKeystrokeOrF2.
F3 Ordina la colonna corrente se il valore della DataGridViewColumn.SortMode proprietà è Automatic. Equivale a fare clic sull'intestazione di colonna corrente. Disponibile a partire da .NET Framework 4.7.2. Per abilitare questa funzionalità, le applicazioni devono avere come destinazione .NET Framework 4.7.2 o versioni successive o acconsentire esplicitamente ai miglioramenti dell'accessibilità usando le opzioni AppContext.
F4 Se la cella corrente è , DataGridViewComboBoxCellimposta la cella in modalità di modifica e visualizza l'elenco a discesa.
Alt freccia + su/giù Se la cella corrente è , DataGridViewComboBoxCellimposta la cella in modalità di modifica e visualizza l'elenco a discesa.
Alt + freccia sinistra/destra Aumenta o riduce la larghezza della colonna della cella corrente.
Space Se la cella corrente è , DataGridViewButtonCellDataGridViewLinkCello DataGridViewCheckBoxCell, genera gli CellClick eventi e CellContentClick . Se la cella corrente è un oggetto DataGridViewButtonCell, preme anche il pulsante. Se la cella corrente è un oggetto DataGridViewCheckBoxCell, cambia anche lo stato di controllo.
Immettere Esegue il commit delle modifiche apportate alla cella e alla riga correnti e sposta lo stato attivo sulla cella direttamente sotto la cella corrente. Se lo stato attivo si trova nell'ultima riga, esegue il commit di eventuali modifiche senza spostare lo stato attivo.
ESC Se il controllo è in modalità di modifica, annulla la modifica. Se il controllo non è in modalità di modifica, ripristina tutte 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.
Backspace Elimina il carattere prima del punto di inserimento durante la modifica di una cella.
CANC Elimina il carattere dopo il punto di inserimento durante la modifica di una cella.
CTRL + INVIO Esegue il commit delle modifiche apportate alla cella corrente senza spostare lo stato attivo. Esegue inoltre il commit delle modifiche apportate alla riga corrente se il controllo è associato a un'origine dati che supporta la modifica o la modalità virtuale è stata implementata con l'ambito di commit a livello di riga.
CTRL + 0 Immette un DBNull.Value valore nella cella corrente se la cella può essere modificata. Per impostazione predefinita, il valore visualizzato per un DBNull valore di cella è il valore della NullValue proprietà dell'oggetto DataGridViewCellStyle in vigore per la cella corrente.

Tasti di selezione

Se la MultiSelect proprietà è impostata su false e la SelectionMode proprietà è impostata su CellSelect, la modifica della cella corrente tramite i tasti di spostamento modifica la selezione nella nuova cella. I tasti MAIUSC, CTRL e ALT non influiscono su questo comportamento.

SelectionMode Se è impostato su RowHeaderSelect o ColumnHeaderSelect, si verifica lo stesso comportamento, ma con le aggiunte seguenti.

Tasto o della combinazione Descrizione
MAIUSC + Barra spaziatrice Seleziona la riga o la colonna completa (uguale a fare clic sull'intestazione di riga o colonna).
tasto di spostamento (tasto freccia, pagina su/giù, Home, Fine) Se è selezionata una riga o una colonna completa, la modifica della cella corrente in una nuova riga o colonna sposta la selezione nella nuova riga o colonna completa ,a seconda della modalità di selezione.

Se MultiSelect è impostato su e SelectionMode è impostato false su FullRowSelect o FullColumnSelect, la modifica della cella corrente in una nuova riga o colonna tramite la tastiera sposta la selezione nella nuova riga o colonna completa. I tasti MAIUSC, CTRL e ALT non influiscono su questo comportamento.

Se MultiSelect è impostato su true, il comportamento di spostamento non cambia, ma lo spostamento con la tastiera mentre si preme MAIUSC (incluso CTRL + MAIUSC) modificherà una selezione a più celle. Prima dell'inizio della navigazione, il controllo contrassegna la cella corrente come cella di ancoraggio. Quando si passa premendo MAIUSC, la selezione include tutte le celle tra la cella di ancoraggio e la cella corrente. Le altre celle del controllo rimarranno selezionate se sono già selezionate, ma potrebbero diventare deselezionate se lo spostamento tramite tastiera li inserisce temporaneamente tra la cella di ancoraggio e la cella corrente.

Se MultiSelect è impostato su e SelectionMode è impostato true su FullRowSelect o FullColumnSelect, il comportamento della cella di ancoraggio e della cella corrente è lo stesso, ma solo le righe o le colonne complete vengono selezionate o deselezionate.

Gestione predefinita del mouse

Gestione del mouse di base

Nota

Facendo clic su una cella con il pulsante sinistro del mouse viene sempre modificata la cella corrente. Facendo clic su una cella con il pulsante destro del mouse si apre un menu di scelta rapida, quando ne è disponibile uno.

Azione del mouse Descrizione
Pulsante sinistro del mouse verso il basso Rende la cella selezionata la cella corrente e genera l'evento DataGridView.CellMouseDown .
Pulsante sinistro del mouse verso l'alto Genera l'evento DataGridView.CellMouseUp.
Fare clic sul pulsante sinistro del mouse Genera gli DataGridView.CellClick eventi e DataGridView.CellMouseClick
Pulsante sinistro del mouse verso il basso e trascinamento su una cella di intestazione di colonna Se la DataGridView.AllowUserToOrderColumns proprietà è true, sposta la colonna in modo che possa essere eliminata in una nuova posizione.

Selezione del mouse

Nessun comportamento di selezione è associato al pulsante centrale del mouse o alla rotellina del mouse.

Se la MultiSelect proprietà è impostata su false e la SelectionMode proprietà è impostata su CellSelect, si verifica il comportamento seguente.

Azione del mouse Descrizione
Clic Seleziona solo la cella corrente se l'utente fa clic su una cella. Nessun comportamento di selezione se l'utente fa clic su un'intestazione di riga o di colonna.
Fare clic con il pulsante destro del mouse su Visualizza un menu di scelta rapida, se disponibile.

Lo stesso comportamento si verifica quando SelectionMode è impostato su RowHeaderSelect o ColumnHeaderSelect, ad eccezione del fatto che, a seconda della modalità di selezione, facendo clic su una riga o un'intestazione di colonna verrà selezionata la riga o la colonna completa e la cella corrente verrà impostata sulla prima cella della riga o della colonna.

Se SelectionMode è impostato su FullRowSelect o FullColumnSelect, facendo clic su una cella in una riga o colonna verrà selezionata la riga o la colonna completa.

Se MultiSelect è impostato su true, facendo clic su una cella premendo CTRL o MAIUSC verrà modificata una selezione a più celle.

Quando si fa clic su una cella premendo CTRL, la cella cambia lo stato di selezione mentre tutte le altre celle mantengono lo stato di selezione corrente.

Quando si fa clic su una cella o su una serie di celle premendo MAIUSC, la selezione include tutte le celle tra la cella corrente e una cella di ancoraggio che si trova nella posizione della cella corrente prima del primo clic. Quando si fa clic e si trascina il puntatore su più celle, la cella di ancoraggio viene selezionata all'inizio dell'operazione di trascinamento. I clic successivi mentre si preme MAIUSC modificano la cella corrente, ma non la cella di ancoraggio. Le altre celle del controllo rimarranno selezionate se sono già state selezionate, ma potrebbero diventare deselezionate se lo spostamento del mouse li inserisce temporaneamente tra la cella di ancoraggio e la cella corrente.

Se MultiSelect è impostato su e SelectionMode è impostato true su RowHeaderSelect o ColumnHeaderSelect, facendo clic su una riga o un'intestazione di colonna (a seconda della modalità di selezione) mentre si preme MAIUSC verrà modificata una selezione esistente di righe o colonne complete, se tale selezione esiste. In caso contrario, cancella la selezione e avvia una nuova selezione di righe o colonne complete. Se si fa clic su un'intestazione di riga o colonna premendo CTRL, tuttavia, si aggiunge o si rimuove la riga o la colonna selezionata dalla selezione corrente senza modificare altrimenti la selezione corrente.

Se MultiSelect è impostato su e SelectionMode è impostato true su FullRowSelect o FullColumnSelect, facendo clic su una cella premendo MAIUSC o CTRL si comporta allo stesso modo, ad eccezione del fatto che solo le righe e le colonne complete sono interessate.

Vedi anche