Arquitectura del control DataGridView (formularios Windows Forms)

El control DataGridView y sus clases relacionadas están diseñados para ser un sistema flexible y extensible para mostrar y editar datos tabulares. Todas estas clases están incluidas en el espacio de nombres System.Windows.Forms y todas se denominan con el prefijo "DataGridView".

Elementos de arquitectura

Las clases complementarias principales DataGridView derivan de DataGridViewElement. En el siguiente modelo de objetos se ilustra la jerarquía de herencia DataGridViewElement.

Diagrama que muestra la jerarquía del modelo de objetos de DataGridViewElement.

La clase DataGridViewElement proporciona una referencia al control primario DataGridView y tiene una propiedad State, que contiene un valor que representa una combinación de valores de la enumeración DataGridViewElementStates.

En las secciones siguientes se describen las clases complementarias DataGridView con más detalle.

DataGridViewElementStates

La enumeración DataGridViewElementStates contiene los valores siguientes:

Los valores de esta enumeración se pueden combinar con los operadores lógicos bit a bit, por lo que la propiedad State puede expresar más de un estado a la vez. Por ejemplo, DataGridViewElement puede ser simultáneamente Frozen, Selected y Visible.

Celdas y bandas

El control DataGridView consta de dos tipos fundamentales de objetos: celdas y bandas. Todas las celdas derivan de la clase base DataGridViewCell. Los dos tipos de bandas, DataGridViewColumn y DataGridViewRow, derivan de la clase base DataGridViewBand.

El control DataGridView interopera con varias clases, pero las más comunes son DataGridViewCell, DataGridViewColumn y DataGridViewRow.

DataGridViewCell

La celda es la unidad fundamental de interacción para DataGridView. La presentación se centra en las celdas y la entrada de datos se realiza a menudo a través de celdas. Puede acceder a las celdas mediante la colección Cells de la clase DataGridViewRow y puede acceder a las celdas seleccionadas mediante la colección SelectedCells del control DataGridView. En el siguiente modelo de objetos se ilustra este uso y muestra la jerarquía de herencia DataGridViewCell.

Diagrama que muestra la jerarquía del modelo de objetos de DataGridViewCell.

El tipo DataGridViewCell es una clase base abstracta, de la que derivan todos los tipos de celda. DataGridViewCell y sus tipos derivados no son controles de Windows Forms, sino algunos controles host de Windows Forms. Las funcionalidades de edición admitidas por una celda normalmente se controlan mediante un control hospedado.

Los objetos DataGridViewCell no controlan su propia apariencia y características de pintura de la misma manera que los controles de Windows Forms. En su lugar, DataGridView es responsable de la apariencia de sus objetos DataGridViewCell. Puede afectar significativamente a la apariencia y el comportamiento de las celdas interactuando con las propiedades y eventos del control DataGridView. Cuando tenga requisitos especiales para las personalizaciones que están fuera de las funcionalidades del control DataGridView, puede implementar su propia clase que derive de DataGridViewCell o de una de sus clases secundarias.

En la lista siguiente se muestran las clases derivadas de DataGridViewCell:

DataGridViewColumn

El esquema del almacén de datos adjunto del control DataGridView se expresa en las columnas del control DataGridView. Puede acceder a las columnas del control DataGridView mediante la colección Columns. Puede acceder a las columnas seleccionadas mediante la colección SelectedColumns. En el siguiente modelo de objetos se ilustra este uso y muestra la jerarquía de herencia DataGridViewColumn.

Diagrama que muestra la jerarquía del modelo de objetos de DataGridViewColumn.

Algunos de los tipos de celda clave tienen tipos de columna correspondientes. Derivan de la clase base DataGridViewColumn.

En la lista siguiente se muestran las clases derivadas de DataGridViewColumn:

Controles de edición de DataGridView

Las celdas que admiten la funcionalidad de edición avanzada suelen usar un control hospedado derivado de un control de Windows Forms. Estos controles también implementan la interfaz IDataGridViewEditingControl. En el siguiente modelo de objetos se ilustra el uso de estos controles.

Diagrama que muestra la jerarquía del modelo de objetos del control de edición DataGridView.

Los controles de edición siguientes se proporcionan con el control DataGridView:

Para obtener información sobre cómo crear sus propios controles de edición, vea Controles host en celdas DataGridView de Windows Forms.

En la tabla siguiente se muestra la relación entre los tipos de celda, los tipos de columna y los controles de edición.

Tipo de celda Control hospedado Tipo de columna
DataGridViewButtonCell N/D DataGridViewButtonColumn
DataGridViewCheckBoxCell n/d DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell n/d DataGridViewImageColumn
DataGridViewLinkCell N/D DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

La clase DataGridViewRow muestra los campos de datos de un registro desde el almacén de datos al que está asociado el control DataGridView. Puede acceder a las filas del control DataGridView mediante la colección Rows. Puede acceder a las filas seleccionadas mediante la colección SelectedRows. En el siguiente modelo de objetos se ilustra este uso y muestra la jerarquía de herencia DataGridViewRow.

Diagrama que muestra la jerarquía del modelo de objetos de DataGridViewRow.

Puede derivar sus propios tipos de la clase DataGridViewRow, aunque normalmente no será necesario. El control DataGridView tiene varios eventos y propiedades relacionados con filas para personalizar el comportamiento de sus objetos DataGridViewRow.

Si habilita la propiedad AllowUserToAddRows del control DataGridView, aparece una fila especial para agregar nuevas filas como la última fila. Esta fila forma parte de la colección Rows, pero tiene una funcionalidad especial que puede requerir su atención. Para más información, consulte Utilizar la fila de nuevos registros en el control DataGridView de formularios Windows Forms.

Consulte también