Pregunta

Quiero deshabilitar la selección de ciertas filas de un datagridview.

Debe ser posible eliminar el seleccione la propiedad de uno o más filas de datagridview en un datagridview se muestra en un winform.El objetivo es que el usuario no puede seleccionar varias filas.(dependiendo de una condición)

Thankx,

¿Fue útil?

Solución

Si SelectionMode es FullRowSelect, entonces usted necesitará reemplazar SetSelectedRowCore para que DataGridView, y no llamar a la base de SetSelectedRowCore para las filas que no desea seleccionado.

Si SelectionMode no es FullRowSelect, usted querrá además reemplazar SetSelectedCellCore (y no llamar a la base de SetSelectedCellCore para las filas que no desea seleccionado), como SetSelectedRowCore sólo se activarán si haga clic en el encabezado de la fila y no en una celda individual.

He aquí un ejemplo:

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
     }
}

Si usted está usando WinForms, abrir el diseñador.cs para el formulario correspondiente, y el cambio de la declaración de la DataGridView instancia a la utilización de esta nueva clase en lugar de DataGridView, y también reemplazar el este.blahblahblah = nuevo Sistema.Windows.Los formularios.DataGridView() para que apunte a la nueva clase.

Otros consejos

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top