Pergunta

Quero desabilitar a seleção de determinadas linhas em um datagridview.

Deve ser possível remover a propriedade select para uma ou mais linhas do datagridview em um datagridview mostrado em um winform.O objetivo é que o usuário não possa selecionar determinadas linhas.(dependendo de uma condição)

Obrigado,

Foi útil?

Solução

Se SelectionMode for FullRowSelect, você precisará substituir SetSelectedRowCore para esse DataGridView e não chamar o SetSelectedRowCore base para linhas que você não deseja selecionar.

Se SelectionMode não for FullRowSelect, você desejará substituir adicionalmente SetSelectedCellCore (e não chamar o SetSelectedCellCore base para linhas que você não deseja selecionar), pois SetSelectedRowCore só será ativado se você clicar no cabeçalho da linha e não em uma célula individual.

Aqui está um exemplo:

public class MyDataGridView : DataGridView
{
    protected override void SetSelectedRowCore(int rowIndex, bool selected)
    {
        if (selected && WantRowSelection(rowIndex))
        {
            base.SetSelectedRowCore(rowIndex, selected);
        }
     }

     protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
     {
         if (selected && WantRowSelection(rowIndex))
         {
            base.SetSelectedRowCore(rowIndex, selected);
          }
     }

     bool WantRowSelection(int rowIndex)
     {
        //return true if you want the row to be selectable, false otherwise
     }
}

Se você estiver usando WinForms, abra seu designer.cs para o formulário relevante e altere a declaração de sua instância DataGridView para usar esta nova classe em vez de DataGridView e também substitua this.blahblahblah = new System.Windows.Forms. DataGridView() para apontar para a nova classe.

Outras dicas

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top