Modos de selección en el control DataGridView de formularios Windows Forms

A veces queremos que la aplicación realice acciones en función de las selecciones de usuario dentro de un control DataGridView. Dependiendo de las acciones, quizá sea conveniente restringir los tipos de selección que puedan realizarse. Por ejemplo, supongamos que la aplicación puede imprimir un informe del registro seleccionado actualmente. En este caso, posiblemente queramos configurar el control DataGridView para que, al hacer clic en cualquier parte de una fila, siempre se seleccione toda la fila y, de este modo, solo se pueda seleccionar una fila a la vez.

Para especificar las selecciones que se permiten, establezca la propiedad DataGridView.SelectionMode en uno de los siguientes valores de enumeración DataGridViewSelectionMode.

Valor de DataGridViewSelectionMode Descripción
CellSelect Si se hace clic en una celda, se selecciona. Los encabezados de fila y columna no se pueden usar para la selección.
ColumnHeaderSelect Si se hace clic en una celda, se selecciona. Si se hace clic en un encabezado de columna, se selecciona toda la columna. No se pueden usar encabezados de columna para la ordenación.
FullColumnSelect Si se hace clic en una celda o en un encabezado de columna, se selecciona toda la columna. No se pueden usar encabezados de columna para la ordenación.
FullRowSelect Si se hace clic en una celda o en un encabezado de fila, se selecciona la fila completa.
RowHeaderSelect Modo de selección predeterminado. Si se hace clic en una celda, se selecciona. Si se hace clic en un encabezado de fila, se selecciona la fila completa.

Nota

Si se cambia el modo de selección en tiempo de ejecución, se borra automáticamente la selección actual.

De forma predeterminada, los usuarios pueden seleccionar varias filas, columnas o celdas arrastrando con el mouse, presionando CTRL o MAYÚS al seleccionar para extender o modificar una selección, o bien haciendo clic en la celda de encabezado superior izquierda para seleccionar todas las celdas del control. Para impedir este comportamiento, establezca la propiedad MultiSelect en false.

Los modos FullRowSelect y RowHeaderSelect permiten a los usuarios eliminar filas seleccionándolas y presionando la tecla Supr. Los usuarios solo pueden eliminar filas cuando la celda actual no esté en el modo de edición, la propiedad AllowUserToDeleteRows esté establecida en true y el origen de datos subyacente permita la eliminación de filas por parte del usuario. Tenga en cuenta que esta configuración no impide la eliminación de filas mediante programación.

Selección mediante programación

El modo de selección actual restringe el comportamiento de la selección mediante programación, así como la selección del usuario. La selección actual mediante programación se puede cambiar estableciendo la propiedad Selected de las celdas, filas o columnas presentes en el control DataGridView. También puede seleccionar todas las celdas del control a través del método SelectAll, dependiendo del modo de selección. Para borrar la selección, use el método ClearSelection.

Si la propiedad MultiSelect está establecida en true, se pueden agregar o quitar elementos DataGridView de la selección, cambiando para ello la propiedad Selected del elemento. De lo contrario, cuando la propiedad Selected se establece en true para un elemento, se quitan automáticamente otros elementos de la selección.

Tenga en cuenta que cambiar el valor de la propiedad CurrentCell no modifica la selección actual.

Puede recuperar una colección de las celdas, filas o columnas seleccionadas actualmente a través de las propiedades SelectedCells, SelectedRows y SelectedColumns del control DataGridView. El acceso a estas propiedades es ineficaz cuando todas las celdas del control están seleccionadas. Para evitar una degradación del rendimiento en tal caso, use primero el método AreAllCellsSelected. Asimismo, el acceso a estas colecciones para determinar el número de celdas, filas o columnas seleccionadas puede ser ineficaz. En su lugar, debe usar los métodos GetCellCount, GetRowCount o GetColumnCount, pasando el valor Selected.

Sugerencia

El código de ejemplo que muestra el uso mediante programación de las celdas seleccionadas se encuentra en la información general de la clase DataGridView.

Consulte también