Comportamiento predeterminado del teclado y el mouse con el control DataGridView

En las tablas siguientes se describe cómo los usuarios pueden interactuar con el control DataGridView mediante un teclado y un mouse.

Nota:

Para personalizar el comportamiento del teclado, puede controlar eventos de teclado estándar, como KeyDown. Sin embargo, en el modo de edición, el control de edición hospedado recibe la entrada del teclado y los eventos de teclado no se producen para el control DataGridView. Para controlar los eventos de control de edición, asocie los controladores al control de edición en un controlador de eventos EditingControlShowing. Como alternativa, puede personalizar el comportamiento del teclado en una subclase DataGridView reemplazando los métodos ProcessDialogKey y ProcessDataGridViewKey.

Control de teclado predeterminado

Teclas de entrada y navegación básicas

Teclas o combinación de teclas Descripción
Flecha abajo Mueve el foco a la celda directamente debajo de la celda actual. Si el foco está en la última fila, no hace nada.
Flecha izquierda Mueve el foco a la celda anterior de la fila. Si el foco está en la primera celda de la fila, no hace nada.
Flecha derecha Mueve el foco a la celda siguiente de la fila. Si el foco está en la última celda de la fila, no hace nada.
Flecha arriba Mueve el foco a la celda directamente encima de la celda actual. Si el foco está en la primera fila, no hace nada.
Página principal Mueve el foco a la primera celda de la fila actual.
Fin Mueve el foco a la última celda de la fila actual.
Avanzar Página Desplaza el control hacia abajo el número de filas que se muestran por completo. Mueve el foco a la última fila que se muestra totalmente sin cambiar las columnas.
Retroceder Página Desplaza el control hacia arriba el número de filas que se muestran por completo. Mueve el foco a la primera fila mostrada sin cambiar las columnas.
Tabulación Si el valor de la propiedad StandardTab es false, mueve el foco a la celda siguiente de la fila actual. Si el foco ya está en la última celda de la fila, mueve el foco a la primera celda de la fila siguiente. Si el foco está en la última celda del control, mueve el foco al siguiente control en el orden de tabulación del contenedor primario.

Si el valor de la propiedad StandardTab es true, mueve el foco al siguiente control en el orden de tabulación del contenedor principal.
Mayús + Tabulador Si el valor de la propiedad StandardTab es false, mueve el foco a la celda anterior de la fila actual. Si el foco ya está en la primera celda de la fila, mueve el foco a la última celda de la fila anterior. Si el foco está en la primera celda del control, mueve el foco al control anterior en el orden de tabulación del contenedor primario.

Si el valor de la propiedad StandardTab es true, mueve el foco al control anterior en el orden de tabulación del contenedor principal.
Ctrl + Tab Si el valor de la propiedad StandardTab es false, mueve el foco al siguiente control en el orden de tabulación del contenedor principal.

Si el valor de la propiedad StandardTab es true, mueve el foco a la celda siguiente de la fila actual. Si el foco ya está en la última celda de la fila, mueve el foco a la primera celda de la fila siguiente. Si el foco está en la última celda del control, mueve el foco al siguiente control en el orden de tabulación del contenedor primario.
Ctrl + Mayús + Tab Si el valor de la propiedad StandardTab es false, mueve el foco al control anterior en el orden de tabulación del contenedor principal.

Si el valor de la propiedad StandardTab es true, mueve el foco a la celda anterior de la fila actual. Si el foco ya está en la primera celda de la fila, mueve el foco a la última celda de la fila anterior. Si el foco está en la primera celda del control, mueve el foco al control anterior en el orden de tabulación del contenedor primario.
Ctrl + flecha Mueve el foco a la celda más lejana en la dirección de la flecha.
Ctrl + Inicio Mueve el foco a la primera celda del control.
Ctrl + Fin Mueve el foco a la última celda del control.
Ctrl + Avanzar/Retroceder Página Igual que Avanzar Página o Retroceder Página.
F2 Coloca la celda actual en modo de edición de celdas si el valor de la propiedad EditMode es EditOnF2 o EditOnKeystrokeOrF2.
F3 Ordena la columna actual si el valor de la propiedad DataGridViewColumn.SortMode es Automatic. Es lo mismo que hacer clic en el encabezado de columna actual. Está disponible a partir de la versión 4.7.2 de .NET Framework. Para habilitar esta característica, las aplicaciones deben tener como destino .NET Framework 4.7.2 o versiones posteriores o participar explícitamente en mejoras de accesibilidad mediante modificadores AppContext.
F4 Si la celda actual es DataGridViewComboBoxCell, coloca la celda en modo de edición y muestra la lista desplegable.
Alt + Flecha arriba/abajo Si la celda actual es DataGridViewComboBoxCell, coloca la celda en modo de edición y muestra la lista desplegable.
Alt + Flecha izquierda/derecha Aumenta o disminuye el ancho de la columna de la celda actual.
Espacio Si la celda actual es DataGridViewButtonCellDataGridViewLinkCell o DataGridViewCheckBoxCell, genera los eventos CellClick y CellContentClick. Si la celda actual es DataGridViewButtonCell, también presiona el botón. Si la celda actual es DataGridViewCheckBoxCell, también cambia el estado de comprobación.
Entrar Confirma los cambios realizados en la celda y fila actuales y mueve el foco a la celda directamente debajo de la celda actual. Si el foco está en la última fila, confirma los cambios sin mover el foco.
Esc Si el control está en modo de edición, cancela la edición. Si el control no está en modo de edición, revierte los cambios realizados en la fila actual si el control está enlazado a un origen de datos que admite la edición o se ha implementado el modo virtual con el ámbito de confirmación de nivel de fila.
Retroceso Elimina el carácter que hay delante del punto de inserción al editar una celda.
Eliminar Elimina el carácter que hay detrás del punto de inserción al editar una celda.
Ctrl + Entrar Confirma los cambios realizados en la celda actual sin mover el foco. También confirma los cambios en la fila actual si el control está enlazado a un origen de datos que admite la edición o se ha implementado el modo virtual con el ámbito de confirmación de nivel de fila.
Ctrl + 0 Escribe un valor DBNull.Value en la celda actual si se puede editar la celda. De forma predeterminada, el valor para mostrar de un valor de celda DBNull es el valor de la propiedad NullValue del objeto DataGridViewCellStyle en vigor para la celda actual.

Teclas de selección

Si la propiedad MultiSelect se establece en false y la propiedad SelectionMode se establece en CellSelect, al cambiar la celda actual mediante las teclas de navegación cambia la selección a la nueva celda. Las teclas Mayús, Ctrl y Alt no afectan a este comportamiento.

Si se establece SelectionMode en RowHeaderSelect o ColumnHeaderSelect, se produce el mismo comportamiento, pero con las siguientes adiciones.

Teclas o combinación de teclas Descripción
Mayús + Barra espaciadora Selecciona la fila o columna completa (igual que hacer clic en el encabezado de fila o columna).
tecla de navegación (tecla de dirección, Avanzar/Retroceder Página, Inicio, Fin) Si se selecciona una fila o columna completa, al cambiar la celda actual a una nueva fila o columna se mueve la selección a la nueva fila o columna completa (según el modo de selección).

Si MultiSelect se establece false en y SelectionMode se establece FullRowSelect en o FullColumnSelect, al cambiar la celda actual a una nueva fila o columna mediante el teclado se mueve la selección a la nueva fila o columna completa. Las teclas Mayús, Ctrl y Alt no afectan a este comportamiento.

Si MultiSelect se establece en true, el comportamiento de navegación no cambia, pero al navegar con el teclado mientras se presiona Mayús (incluido Ctrl + Mayús) se modificará una selección de varias celdas. Antes de que comience la navegación, el control marca la celda actual como una celda delimitadora. Al navegar mientras se presiona Mayús, la selección incluye todas las celdas entre la celda delimitadora y la celda actual. Otras celdas del control permanecerán seleccionadas si ya lo estaban, pero pueden dejar de seleccionarse si la navegación mediante teclado las coloca temporalmente entre la celda delimitadora y la celda actual.

Si MultiSelect se establece en true y SelectionMode se establece en FullRowSelect o FullColumnSelect, el comportamiento de la celda delimitadora y la celda actual es el mismo, pero solo se seleccionan o deseleccionan las filas o columnas completas.

Control predeterminado del mouse

Control básico del mouse

Nota:

Al hacer clic en una celda con el botón izquierdo del mouse, siempre se cambia la celda actual. Al hacer clic en una celda con el botón derecho del mouse, se abre un menú contextual, cuando hay uno disponible.

Acción del mouse Descripción
Botón izquierdo del mouse hacia abajo Convierte la celda en la que se hace clic en la celda actual y genera el evento DataGridView.CellMouseDown.
Botón izquierdo del mouse hacia arriba Genera el evento DataGridView.CellMouseUp.
Clic con el botón izquierdo del mouse Genera los eventos DataGridView.CellClick y DataGridView.CellMouseClick.
Botón izquierdo del mouse hacia abajo y arrastrar una celda de encabezado de columna Si la propiedad DataGridView.AllowUserToOrderColumns es true, se mueve la columna para que se pueda colocar en una nueva posición.

Selección con el mouse

No hay ningún comportamiento de selección asociado al botón central del mouse o a la rueda del mouse.

Si la propiedad MultiSelect está establecida en false y la propiedad SelectionMode está establecida en CellSelect, se produce el siguiente comportamiento.

Acción del mouse Descripción
Haga clic en Selecciona solo la celda actual si el usuario hace clic en una celda. No hay ningún comportamiento de selección si el usuario hace clic en un encabezado de fila o columna.
Haga clic con el botón secundario en Muestra un menú contextual si hay uno disponible.

El mismo comportamiento se produce cuando se establece SelectionMode en RowHeaderSelect o ColumnHeaderSelect, excepto que, en función del modo de selección, al hacer clic en un encabezado de fila o columna se selecciona la fila o columna completa y se establece la celda actual en la primera celda de la fila o columna.

Si SelectionMode se establece en FullRowSelect o FullColumnSelect, al hacer clic en cualquier celda de una fila o columna, se seleccionará la fila o columna completa.

Si MultiSelect se establece en true, al hacer clic en una celda al presionar Ctrl o Mayús se modificará una selección de varias celdas.

Al hacer clic en una celda mientras presiona Ctrl, la celda cambiará su estado de selección mientras que todas las demás celdas conservan su estado de selección actual.

Al hacer clic en una celda o una serie de celdas mientras se presiona Mayús, la selección incluye todas las celdas entre la celda actual y una celda delimitadora situada en la posición de la celda actual antes del primer clic. Al hacer clic y arrastrar el puntero entre varias celdas, la celda delimitadora es la celda en la que se hace clic al principio de la operación de arrastre. Los clics posteriores al presionar Mayús cambian la celda actual, pero no la celda delimitadora. Otras celdas del control permanecerán seleccionadas si ya estaban seleccionadas, pero pueden dejar de seleccionarse si la navegación con el mouse las coloca temporalmente entre la celda delimitadora y la celda actual.

Si MultiSelect se establece en true y SelectionMode se establece en RowHeaderSelect o ColumnHeaderSelect, al hacer clic en un encabezado de fila o columna (según el modo de selección) mientras se presiona Mayús se modificará una selección existente de filas o columnas completas si existe dicha selección. De lo contrario, se borrará la selección y se iniciará una nueva selección de filas o columnas completas. No obstante, al hacer clic en un encabezado de fila o columna mientras se presiona Ctrl, se agregará o quitará la fila o columna de la selección actual sin modificar de ninguna otra forma la selección actual.

Si MultiSelect se establece en true y SelectionMode se establece en FullRowSelect o FullColumnSelect, al hacer clic en una celda mientras se presiona Mayús o Ctrl el comportamiento es el mismo, excepto que solo se ven afectadas las filas y columnas completas.

Consulte también