Partilhar via


Modos de seleção no controle DataGridView do Windows Forms

Às vezes, você deseja que seu aplicativo execute ações com base em seleções de usuários dentro de um controle DataGridView. Dependendo das ações, você pode querer restringir os tipos de seleção que são possíveis. Por exemplo, suponha que seu aplicativo possa imprimir um relatório para o registro selecionado no momento. Nesse caso, convém configurar o controle DataGridView para que clicar em qualquer lugar dentro de uma linha sempre selecione a linha inteira e para que apenas uma linha de cada vez possa ser selecionada.

Você pode especificar as seleções permitidas definindo a propriedade DataGridView.SelectionMode como um dos seguintes valores de enumeração DataGridViewSelectionMode.

Valor de DataGridViewSelectionMode Descrição
CellSelect Clicar numa célula seleciona-a. Os cabeçalhos de linha e coluna não podem ser usados para seleção.
ColumnHeaderSelect Clicar numa célula seleciona-a. Clicar no cabeçalho de uma coluna seleciona a coluna inteira. Os cabeçalhos de coluna não podem ser usados para classificação.
FullColumnSelect Clicar em uma célula ou no cabeçalho de uma coluna seleciona a coluna inteira. Os cabeçalhos de coluna não podem ser usados para classificação.
FullRowSelect Clicar em uma célula ou no cabeçalho de uma linha seleciona a linha inteira.
RowHeaderSelect Modo de seleção padrão. Clicar numa célula seleciona-a. Clicar no cabeçalho de uma linha seleciona a linha inteira.

Observação

Alterar o modo de seleção em tempo de execução limpa automaticamente a seleção atual.

Por padrão, os usuários podem selecionar várias linhas, colunas ou células arrastando com o mouse, pressionando CTRL ou SHIFT enquanto selecionam para estender ou modificar uma seleção ou clicando na célula de cabeçalho superior esquerda para selecionar todas as células no controle. Para evitar esse comportamento, defina a propriedade MultiSelect como false.

Os modos FullRowSelect e RowHeaderSelect permitem que os usuários excluam linhas selecionando-as e pressionando a tecla DELETE. Os usuários podem excluir linhas somente quando a célula atual não está no modo de edição, a propriedade AllowUserToDeleteRows está definida como truee a fonte de dados subjacente oferece suporte à exclusão de linha orientada pelo usuário. Nota que estas configurações não impedem a eliminação de linhas através de programação.

Seleção Programática

O modo de seleção atual restringe o comportamento da seleção programática, bem como a seleção do usuário. Você pode alterar a seleção atual programaticamente definindo a propriedade Selected de quaisquer células, linhas ou colunas presentes no controle DataGridView. Você também pode selecionar todas as células no controle através do método SelectAll, dependendo do modo de seleção. Para limpar a seleção, use o método ClearSelection.

Se a propriedade MultiSelect estiver definida como true, você poderá adicionar elementos DataGridView ou removê-los da seleção alterando a propriedade Selected do elemento. Caso contrário, definir a propriedade Selected como true para um elemento remove automaticamente outros elementos da seleção.

Observe que alterar o valor da propriedade CurrentCell não altera a seleção atual.

Você pode recuperar uma coleção das células, linhas ou colunas selecionadas atualmente por meio das propriedades SelectedCells, SelectedRowse SelectedColumns do controle DataGridView. O acesso a essas propriedades é ineficiente quando cada célula no controle é selecionada. Para evitar uma penalidade de desempenho neste caso, use o método AreAllCellsSelected primeiro. Além disso, acessar essas coleções para determinar o número de células, linhas ou colunas selecionadas pode ser ineficiente. Em vez disso, você deve usar o método GetCellCount, GetRowCountou GetColumnCount, passando o valor Selected.

Sugestão

Exemplo de código que demonstra o uso programático de células selecionadas pode ser encontrado na visão geral da classe DataGridView.

Ver também