DataGrid de sólo lectura en Windows Forms

Published 144 weeks, 1 day ago
Mon Apr 03 2006
Las DataGrid en Windows Forms permiten al usuario, por defecto, editar los valores que muestran e incluso crear registros nuevos.

¿Y si queremos cargar una rejilla que sólo muestre datos, sin posibilidad de editarlos o de añadir nuevos datos?

Para ello, una de las cosas que podemos hacer es modificar las propiedades del DefaultView de la tabla con la que vamos a alimentar de datos a la rejilla. Por ejemplo, pongamos que tenemos un DataTable dtDatos que va a ser el DataSource de la rejilla. Si modificamos las propiedades AllowDelete, AllowEdit y AllowNew de la vista por defecto de la tabla origen de datos, tal que así:

dtDatos.DefaultView.AllowDelete = false;
dtDatos.DefaultView.AllowEdit = false;
dtDatos.DefaultView.AllowNew = false;
grdDatos.DataSource = this.dtDatos;

Colorized by: CarlosAg.CodeColorizer

la rejilla grdDatos no permitirá al usuario que modifique, borre o añada nuevos registros.

Por otro lado, si lo que queremos es que se seleccione la fila entera de la rejilla al clickar en cualquiera de sus celdas, implementamos el siguiente código en el evento CurrentCellChanged de la rejilla, que se dispara al cambiar de celda seleccionada.

private void grdDatos_CurrentCellChanged(object sender, EventArgs e)
{
    grdDatos.Select(grdDatos.CurrentRowIndex)
;
}

Colorized by: CarlosAg.CodeColorizer

Sencillamente, lo que hacemos es decirle a la rejilla que seleccione toda la fila, sabiendo qué fila es la que tiene que seleccionar gracias a la propiedad CurrentRowIndex.