Partilhar via


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

As tabelas a seguir descrevem como os utilizadores podem interagir com o controlo DataGridView por meio de um teclado e um rato.

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 do 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, pode personalizar o comportamento do teclado numa subclasse DataGridView ao substituir os métodos ProcessDialogKey e ProcessDataGridViewKey.

Gestão predefinida do teclado

Teclas básicas de navegação e entrada

Chave 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 faz nada.
Seta para a esquerda Move o foco para a célula anterior na linha. Se o foco estiver na primeira célula da linha, então não faz nada.
Seta para a direita Mover o foco para a célula seguinte na linha. Se o foco estiver na última célula da linha, não faz 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 faz nada.
Início Move o foco para a primeira célula da linha atual.
Fim Move o foco para a última célula da 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.
Separador Se o valor da StandardTab propriedade for false, o foco será movido para a próxima célula na linha atual. Se o foco já estiver na última célula da linha, move o foco para a primeira célula na linha seguinte. Se o foco estiver na última célula do controle, move o foco para o próximo controle na ordem de tabulação do contêiner pai.

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

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

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

Se o valor da propriedade StandardTab for true, o foco será movido para a célula anterior na linha atual. Se o foco já estiver na primeira célula da linha, move o foco para a última célula da linha anterior. Se o foco estiver na primeira célula do controle, move o foco para o controle anterior na ordem de tabulação do contêiner pai.
+ Ctrlseta Move o foco para a célula mais distante na direção da seta.
Ctrl + Início Mova o foco para a primeira célula no controle.
+ CtrlFim Move o foco para a última célula do controle.
+ CtrlPágina para baixo/para cima O mesmo que Page down ou Page up.
F2 Coloca a célula corrente em modo de edição se o valor da propriedade EditMode 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 opções AppContext.
F4 Se a célula atual for um DataGridViewComboBoxCell, coloca a célula no modo de edição e exibe a lista suspensa.
+ AltSeta para cima/para baixo Se a célula atual for um DataGridViewComboBoxCell, coloca a célula no modo de edição e exibe a lista suspensa.
Alt + Seta para a esquerda/direita Aumenta ou diminui a largura da coluna da célula atual.
Espaço Se a célula atual for um DataGridViewButtonCell, DataGridViewLinkCell, ou DataGridViewCheckBoxCell, gera os eventos CellClick 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.
Digite Confirma quaisquer alterações na célula e linha atuais e move o foco para a célula diretamente abaixo da célula atual. Se o foco estiver na última fila, confirma 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 todas as alterações feitas na linha atual se o controle estiver vinculado a uma fonte de dados que ofereça suporte à edição ou se o modo virtual tiver sido implementado com escopo de confirmação em nível de linha.
Tecla retroceder Exclui o caractere antes do ponto de inserção ao editar uma célula.
Eliminar Exclui o caractere após o ponto de inserção ao editar uma célula.
+ CtrlEntrar Aplica quaisquer alterações na célula atual sem mudar o foco. Também confirma quaisquer alterações na linha atual se o controle estiver vinculado a uma fonte de dados que ofereça suporte à edição ou se o modo virtual tiver sido implementado com escopo de confirmação em nível de linha.
+ Ctrl0 Introduz um valor DBNull.Value na célula atual, caso esta possa ser editada. Por padrão, o valor de exibição de um DBNull é o valor da propriedade NullValue do DataGridViewCellStyle em vigor para a célula atual.

Teclas de seleção

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

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

Chave ou combinação de teclas Descrição
Shift + Barra de espaço Seleciona a linha ou coluna completa (o mesmo que clicar no cabeçalho da linha ou coluna).
tecla de navegação (tecla de seta, Página para cima/baixo, Início, Fim) Se uma linha ou coluna completa for selecionada, alterar a célula atual para uma nova linha ou coluna moverá a seleção para a nova linha ou coluna completa (dependendo do modo de seleção).

Se MultiSelect estiver definido como false e SelectionMode estiver definido como FullRowSelect ou FullColumnSelect, alterar a célula atual para uma nova linha ou coluna usando o teclado move 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 do início da navegação, o controle marca a célula atual como uma célula âncora. Quando você navega pressionando Shift, a seleção inclui todas as células entre a célula âncora e a célula atual. Outras células no controlo permanecerão selecionadas se já estiverem selecionadas, mas podem ficar não selecionadas se a navegação do teclado as colocar temporariamente entre a célula de âncora e a célula atual.

Se MultiSelect estiver definido como true e SelectionMode estiver definido como FullRowSelect ou FullColumnSelect, o comportamento da célula âncora e da célula atual será o mesmo, mas apenas linhas ou colunas inteiras serão selecionadas ou desmarcadas.

Manuseamento predefinido do rato

Manuseamento básico do rato

Observação

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

Ação do mouse Descrição
Botão esquerdo do rato para baixo Torna a célula clicada a célula atual e gera o DataGridView.CellMouseDown evento.
Botão esquerdo do rato para cima Levanta o DataGridView.CellMouseUp evento
Clique com o botão esquerdo do rato Gera os eventos DataGridView.CellClick e DataGridView.CellMouseClick
Botão esquerdo do mouse para baixo e arraste sobre uma célula de cabeçalho de coluna Se a DataGridView.AllowUserToOrderColumns propriedade for true, move a coluna, permitindo que esta seja largada noutra posição.

Seleção do mouse

Nenhum comportamento de seleção está associado ao botão do meio do mouse ou à roda do mouse.

Se a MultiSelect propriedade estiver definida como false e a SelectionMode propriedade estiver definida como CellSelect, ocorrerá o seguinte comportamento.

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

O mesmo comportamento ocorre quando o SelectionMode é definido como RowHeaderSelect ou ColumnHeaderSelect, 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 para a primeira célula na linha ou coluna.

Se SelectionMode estiver definido como FullRowSelect ou FullColumnSelect, clicar em qualquer célula de 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 através de 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. Outras células no controle permanecerão selecionadas se já tiverem sido selecionadas, mas poderão ser desmarcadas se a navegação do mouse as colocar temporariamente entre a célula âncora e a célula atual.

Se MultiSelect estiver definido como true e SelectionMode estiver definido como RowHeaderSelect 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, ele limpará a seleção e iniciará uma nova seleção de linhas ou colunas completas. 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 true e SelectionMode estiver definido como FullRowSelect ou FullColumnSelect, clicar em uma célula enquanto pressiona Shift ou Ctrl se comportará da mesma maneira, exceto que apenas linhas e colunas inteiras serão afetadas.

Ver também