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
.NET Desktop feedback