Compartilhar via


Comportamento padrão do teclado e do mouse com o controle DataGridView

As tabelas a seguir descrevem como os usuários podem interagir com o controle por meio de DataGridView um teclado e um mouse.

Observação

Para personalizar o comportamento do teclado, você pode manipular eventos de teclado padrão, como KeyDown. No modo de edição, no entanto, o controle de edição hospedado recebe a entrada do teclado e os eventos de teclado não ocorrem para o DataGridView controle. Para manipular eventos de controle de edição, anexe seus manipuladores ao controle de edição em um EditingControlShowing manipulador de eventos. Como alternativa, você pode personalizar o comportamento do teclado em uma DataGridView subclasse substituindo os ProcessDialogKey métodos e ProcessDataGridViewKey .

Manipulação padrão do teclado

Teclas básicas de navegação e de entrada

Tecla ou combinação de teclas Descrição
Seta para baixo Move o foco para a célula diretamente abaixo da célula atual. Se o foco estiver na última linha, não fará nada.
Seta para a esquerda Move o foco para a célula anterior na linha. Se o foco estiver na primeira célula na linha, não fará nada.
Seta para a direita Move o foco para a próxima célula na linha. Se o foco estiver na última célula na linha, não fará nada.
Seta para cima Move o foco para a célula diretamente acima da célula atual. Se o foco estiver na primeira linha, não fará nada.
Página Inicial Move o foco para a primeira célula na linha atual.
Término Move o foco até a última célula na linha atual.
Página abaixo Rola o controle para baixo pelo número de linhas que são totalmente exibidas. Move o foco para a última linha totalmente exibida sem alterar as colunas.
Página acima Rola o controle para cima pelo número de linhas que são totalmente exibidas. Move o foco para a primeira linha exibida sem alterar as colunas.
Tabulação Se o valor da propriedade for false, move o StandardTab foco para a próxima célula na linha atual. Se o foco já estiver na última célula da linha, o foco moverá para a primeira célula da linha seguinte. Se o foco estiver na última célula no controle, moverá o foco para o próximo controle na ordem de tabulação do contêiner pai.

Se o valor da propriedade for true, moverá o foco para o StandardTab próximo controle na ordem de tabulação do contêiner pai.
Shift + Tab Se o valor da propriedade for false, move o StandardTab foco para a célula anterior na linha atual. Se o foco já estiver na primeira célula da linha, moverá o foco para a última célula da linha anterior. Se o foco estiver na primeira célula no controle, moverá o foco para o controle anterior na ordem de tabulação do contêiner pai.

Se o valor da propriedade for true, move o foco para o StandardTab controle anterior na ordem de tabulação do contêiner pai.
Ctrl + Tab Se o valor da propriedade for false, moverá o foco para o StandardTab próximo controle na ordem de tabulação do contêiner pai.

Se o valor da propriedade for true, move o StandardTab foco para a próxima célula na linha atual. Se o foco já estiver na última célula da linha, o foco moverá para a primeira célula da linha seguinte. Se o foco estiver na última célula no controle, moverá o foco para o próximo controle na ordem de tabulação do contêiner pai.
Ctrl + Shift + Tab Se o valor da propriedade for false, move o foco para o StandardTab controle anterior na ordem de tabulação do contêiner pai.

Se o valor da propriedade for true, move o StandardTab foco para a célula anterior na linha atual. Se o foco já estiver na primeira célula da linha, moverá o foco para a última célula da linha anterior. Se o foco estiver na primeira célula no controle, moverá o foco para o controle anterior na ordem de tabulação do contêiner pai.
+ Ctrl seta Move o foco para a célula mais distante na direção da seta.
Ctrl + Home Move o foco para a primeira célula no controle.
Ctrl + End Move o foco para a última célula no controle.
+ Ctrl Página para baixo/para cima O mesmo que Page down ou Page up.
F2 Coloca a célula atual no modo de edição de célula se o valor da EditMode propriedade for EditOnF2 ou EditOnKeystrokeOrF2.
F3 Classifica a coluna atual se o valor da DataGridViewColumn.SortMode propriedade for Automatic. É o mesmo que clicar no cabeçalho da coluna atual. Disponível desde o .NET Framework 4.7.2. Para habilitar esse recurso, os aplicativos devem ter como destino o .NET Framework 4.7.2 ou versões posteriores ou optar explicitamente por melhorias de acessibilidade usando as opções AppContext.
F4 Se a célula atual for um DataGridViewComboBoxCell, colocará a célula no modo de edição e exibirá a lista suspensa.
+ Alt Seta para cima/para baixo Se a célula atual for um DataGridViewComboBoxCell, colocará a célula no modo de edição e exibirá a lista suspensa.
+ Alt Seta para a esquerda/direita Aumenta ou diminui a largura da coluna da célula atual.
Space Se a célula atual for um DataGridViewButtonCell, ou DataGridViewCheckBoxCell, DataGridViewLinkCellgera os CellClick eventos e CellContentClick . Se a célula atual for um DataGridViewButtonCell, também pressiona o botão. Se a célula atual for um DataGridViewCheckBoxCell, também altera o estado de verificação.
Enter Confirma as alterações feitas na célula e na linha atuais e move o foco para a célula diretamente abaixo da célula atual. Se o foco estiver na última linha, confirmará as alterações sem mover o foco.
Esc Se o controle estiver no modo de edição, cancelará a edição. Se o controle não estiver no modo de edição, reverte as alterações que foram feitas na linha atual se o controle estiver associado a uma fonte de dados que dá suporte à edição ou se o modo virtual tiver sido implementado com escopo de confirmação de nível de linha.
Backspace Exclui o caractere antes do ponto de inserção ao editar uma célula.
Delete Exclui o caractere após o ponto de inserção ao editar uma célula.
CTRL + ENTER Confirma as alterações na célula atual sem mover o foco. Também confirma as alterações na linha atual se o controle estiver associado a uma fonte de dados que dá suporte à edição ou se o modo virtual tiver sido implementado com escopo de confirmação de nível de linha.
CTRL + 0 Introduz um DBNull.Value valor na célula atual se a célula puder ser editada. Por padrão, o valor de exibição para um DBNull valor de célula é o NullValue valor da propriedade do DataGridViewCellStyle em vigor para a célula atual.

Teclas de seleção

Se a propriedade estiver definida como e a propriedade estiver definida como CellSelectfalse , alterar a célula atual usando as teclas de navegação alterará a seleção para a MultiSelectSelectionMode nova célula. As teclas Shift, Ctrl e Alt não afetam esse comportamento.

Se o SelectionMode for definido como RowHeaderSelect ou ColumnHeaderSelect, o mesmo comportamento ocorre, mas com as seguintes adições.

Tecla ou combinação de teclas Descrição
Shift + Barra de espaços Seleciona a linha ou a coluna inteira (o mesmo que clicar no cabeçalho da linha ou da coluna).
tecla de navegação (tecla de seta, Página para cima/para baixo, Home, End) Se uma linha ou coluna inteira estiver selecionada, a alteração da célula atual para uma nova linha ou coluna moverá a seleção para a nova linha ou coluna inteira (dependendo do modo de seleção).

Se MultiSelect estiver definido como e estiver definido como FullRowSelectfalse ou FullColumnSelectSelectionMode , alterar a célula atual para uma nova linha ou coluna usando o teclado moverá a seleção para a nova linha ou coluna completa. As teclas Shift, Ctrl e Alt não afetam esse comportamento.

Se MultiSelect estiver definido como true, o comportamento de navegação não será alterado, mas navegar com o teclado enquanto pressiona Shift (incluindo Ctrl + Shift) modificará uma seleção de várias células. Antes de iniciar a navegação, o controle marca a célula atual como uma célula de âncora. Quando você navega enquanto pressiona Shift, a seleção inclui todas as células entre a célula âncora e a célula atual. As outras células no controle permanecerão selecionadas se já tiverem sido selecionadas, mas poderão ficar não selecionadas se a navegação do teclado colocá-las temporariamente entre a célula âncora e a célula atual.

Se MultiSelect estiver definido como e estiver definido como FullRowSelecttrue ou , o comportamento da célula âncora e SelectionMode da célula atual será o mesmo, mas somente linhas ou colunas completas serão selecionadas ou FullColumnSelectdesmarcadas.

Manipulação padrão do mouse

Manuseio básico do mouse

Observação

Clicar em uma célula com o botão esquerdo do mouse sempre altera a célula atual. Clicar em uma célula com o botão direito do mouse abre um menu de atalho, quando disponível.

Ação do mouse Descrição
Botão esquerdo do mouse para baixo Torna a célula clicada a célula atual e gera o DataGridView.CellMouseDown evento.
Botão esquerdo do mouse para cima Gera o DataGridView.CellMouseUp evento
Clique com o botão esquerdo do mouse Levanta o DataGridView.CellClick e DataGridView.CellMouseClick eventos
Botão esquerdo do mouse para baixo e arrastar em uma célula de cabeçalho de coluna Se a propriedade for true, move a DataGridView.AllowUserToOrderColumns coluna para que ela possa ser descartada em uma nova posição.

Seleção do mouse

Nenhum comportamento de seleção está associado com o botão do meio ou botão de rolagem do mouse.

Se a propriedade estiver definida como e a SelectionModeMultiSelect propriedade estiver definida como CellSelectfalse , ocorrerá o seguinte comportamento.

Ação do mouse Descrição
Clique Selecionará apenas a célula atual se o usuário clicar em uma célula. Nenhum comportamento de seleção se o usuário clicar em um cabeçalho de linha ou de coluna.
Clique com o botão direito em Exibe um menu de atalho, se estiver disponível.

O mesmo comportamento ocorre quando o SelectionMode é definido como ou , exceto que, dependendo do modo de seleção, clicar em um cabeçalho de linha ou coluna selecionará a linha ou coluna completa e definirá a célula atual como RowHeaderSelect a primeira célula da linha ou ColumnHeaderSelectcoluna.

Se SelectionMode estiver definido como FullRowSelect ou FullColumnSelect, clicar em qualquer célula em uma linha ou coluna selecionará a linha ou coluna completa.

Se MultiSelect estiver definido como true, clicar em uma célula enquanto pressiona Ctrl ou Shift modificará uma seleção de várias células.

Quando você clica em uma célula enquanto pressiona Ctrl, a célula altera seu estado de seleção, enquanto todas as outras células mantêm seu estado de seleção atual.

Quando você clica em uma célula ou em uma série de células enquanto pressiona Shift, a seleção inclui todas as células entre a célula atual e uma célula âncora localizada na posição da célula atual antes do primeiro clique. Quando você clica e arrasta o ponteiro por várias células, a célula âncora é a célula clicada no início da operação de arrastar. Os cliques subsequentes ao pressionar Shift alteram a célula atual, mas não a célula âncora. As outras células no controle permanecerão selecionadas se já tiverem sido selecionadas, mas poderão ficar não selecionadas se a navegação do mouse colocá-las temporariamente entre a célula âncora e a célula atual.

Se MultiSelect estiver definido como e SelectionMode estiver definido como RowHeaderSelecttrue ou ColumnHeaderSelect, clicar em um cabeçalho de linha ou coluna (dependendo do modo de seleção) enquanto pressiona Shift modificará uma seleção existente de linhas ou colunas completas, se essa seleção existir. Caso contrário, isso limpará a seleção e iniciará uma nova seleção de colunas ou linhas inteiras. No entanto, clicar em um cabeçalho de linha ou coluna enquanto pressiona Ctrl adicionará ou removerá a linha ou coluna clicada da seleção atual sem modificar a seleção atual.

Se MultiSelect estiver definido como e estiver definido como FullRowSelecttrue ou , clicar em uma célula enquanto pressiona Shift ou FullColumnSelectCtrl se comportará da mesma maneira, exceto que apenas linhas e SelectionMode colunas completas serão afetadas.

Confira também