Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Cada celda del DataGridView control puede tener su propio estilo, como el formato de texto, el color de fondo, el color de primer plano y la fuente. Sin embargo, normalmente, varias celdas compartirán características de estilo particulares.
Los grupos de celdas que comparten estilos pueden incluir todas las celdas dentro de filas o columnas concretas, todas las celdas que contienen valores concretos o todas las celdas del control. Dado que estos grupos se superponen, cada celda puede obtener su información de estilo de más de un lugar. Por ejemplo, puede querer que todas las celdas de un DataGridView control usen la misma fuente, pero solo las celdas de las columnas de tipo moneda usen el formato de moneda y solo las celdas con formato de moneda con números negativos usen un color de primer plano rojo.
Clase DataGridViewCellStyle
La DataGridViewCellStyle clase contiene las siguientes propiedades relacionadas con el estilo visual:
Esta clase también contiene las siguientes propiedades relacionadas con el formato:
Para obtener más información sobre estas propiedades y otras propiedades de estilo de celda, consulte la documentación de referencia DataGridViewCellStyle y los artículos enumerados en la sección Ver también que aparece a continuación.
Uso de objetos DataGridViewCellStyle
Puede recuperar DataGridViewCellStyle objetos de varias propiedades de las clases DataGridView, DataGridViewColumn, DataGridViewRow y DataGridViewCell y sus clases derivadas. Si aún no se ha establecido una de estas propiedades, la recuperación de su valor creará un nuevo DataGridViewCellStyle objeto. También puede crear instancias de sus propios DataGridViewCellStyle objetos y asignarlos a estas propiedades.
Puede evitar la duplicación innecesaria de la información de estilo compartiendo DataGridViewCellStyle objetos entre varios DataGridView elementos. Dado que los estilos establecidos en los niveles de control, columna y fila filtran por cada nivel al nivel de celda, también puede evitar la duplicación de estilos estableciendo solo esas propiedades de estilo en cada nivel que difieren de los niveles anteriores. Esto se describe con más detalle en la sección Herencia de estilo siguiente.
En la tabla siguiente se enumeran las propiedades principales que obtienen o establecen DataGridViewCellStyle objetos.
| Propiedad | Las clases | Descripción |
|---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRow y clases derivadas | Obtiene o establece los estilos predeterminados usados por todas las celdas del control completo (incluidas las celdas de encabezado), en una columna o en una fila. |
| RowsDefaultCellStyle | DataGridView | Obtiene o establece los estilos de celda predeterminados utilizados por todas las filas del control. Esto no incluye celdas de encabezado. |
| AlternatingRowsDefaultCellStyle | DataGridView | Obtiene o establece los estilos de celda predeterminados que se usan alternando filas en el control. Se usa para crear un efecto similar al libro de contabilidad. |
| RowHeadersDefaultCellStyle | DataGridView | Obtiene o establece los estilos de celda predeterminados usados por los encabezados de fila del control. Anulado por el tema actual si los estilos visuales están habilitados. |
| ColumnHeadersDefaultCellStyle | DataGridView | Obtiene o establece los estilos de celda predeterminados utilizados por los encabezados de columna del control. Anulado por el tema actual si los estilos visuales están habilitados. |
| Style | DataGridViewCell y clases derivadas | Obtiene o establece estilos especificados en el nivel de celda. Estos estilos anulan aquellos heredados de niveles superiores. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumn y clases derivadas | Obtiene todos los estilos aplicados actualmente a la celda, fila o columna, incluidos los estilos heredados de niveles superiores. |
Como se mencionó anteriormente, al obtener el valor de una propiedad style, se crea una instancia automática de un nuevo DataGridViewCellStyle objeto si la propiedad no se ha establecido previamente. Para evitar crear estos objetos innecesariamente, las clases de fila y columna tienen una HasDefaultCellStyle propiedad que se puede comprobar para determinar si se ha establecido la DefaultCellStyle propiedad. Del mismo modo, las clases de celda tienen una HasStyle propiedad que indica si se ha establecido la Style propiedad .
Cada una de las propiedades de estilo tiene un evento PropertyNameChanged correspondiente en el DataGridView control . Para las propiedades row, column y cell, el nombre del evento comienza por "", "RowColumn" o "Cell" (por ejemplo, RowDefaultCellStyleChanged). Cada uno de estos eventos se produce cuando la propiedad de estilo correspondiente se establece en un objeto diferente DataGridViewCellStyle . Estos eventos no se producen cuando se recupera un DataGridViewCellStyle objeto de una propiedad de estilo y se modifican sus valores de propiedad. Para responder a los cambios en los objetos de estilo de celda en sí mismos, controle el evento CellStyleContentChanged.
Herencia de estilos
Cada DataGridViewCell obtiene su apariencia de su InheritedStyle propiedad. El DataGridViewCellStyle objeto devuelto por esta propiedad hereda sus valores de una jerarquía de propiedades de tipo DataGridViewCellStyle. Estas propiedades se enumeran a continuación en el orden en que las celdas no encabezadas InheritedStyle obtienen sus valores.
DataGridView.AlternatingRowsDefaultCellStyle (solo para las celdas de las filas con números de índice impar)
Para las celdas de encabezado de fila y columna, la InheritedStyle propiedad se rellena mediante valores de la siguiente lista de propiedades de origen en el orden especificado.
En el diagrama siguiente se muestra este proceso.
También puede acceder a los estilos heredados por filas y columnas específicas. La propiedad column InheritedStyle hereda sus valores de las siguientes propiedades.
La propiedad row InheritedStyle hereda sus valores de las siguientes propiedades.
DataGridView.AlternatingRowsDefaultCellStyle (solo para las celdas de las filas con números de índice impar)
Para cada propiedad de un objeto DataGridViewCellStyle devuelto por una propiedad InheritedStyle, el valor de la propiedad se obtiene del primer estilo de celda en la lista adecuada que tiene la propiedad correspondiente establecida en un valor distinto de los valores predeterminados de la clase DataGridViewCellStyle.
En la siguiente tabla se muestra cómo la propiedad de valor ForeColor de una celda de ejemplo se hereda de su columna contenedora.
Propiedad de tipo DataGridViewCellStyle |
Valor de ejemplo ForeColor para el objeto recuperado |
|---|---|
| DataGridViewCell.Style | Color.Empty |
| DataGridViewRow.DefaultCellStyle | Color.Red |
| DataGridView.AlternatingRowsDefaultCellStyle | Color.Empty |
| DataGridView.RowsDefaultCellStyle | Color.Empty |
| DataGridViewColumn.DefaultCellStyle | Color.DarkBlue |
| DataGridView.DefaultCellStyle | Color.Black |
En este caso, el Color.Red valor de la fila de la celda es el primer valor real de la lista. Esto se convierte en el ForeColor valor de propiedad de InheritedStylela celda.
En el diagrama siguiente se muestra cómo DataGridViewCellStyle diferentes propiedades pueden heredar sus valores de diferentes lugares.
Al aprovechar la herencia de estilos, puede proporcionar estilos adecuados para todo el control sin tener que especificar la misma información en varios lugares.
Aunque las celdas de encabezado participan en la herencia de estilo como se describe, los objetos devueltos por las propiedades ColumnHeadersDefaultCellStyle y RowHeadersDefaultCellStyle del control DataGridView tienen valores de propiedad iniciales que sobrescriben los valores de propiedad del objeto devuelto por la propiedad DefaultCellStyle. Si desea que las propiedades establecidas para el objeto devuelto por la DefaultCellStyle propiedad se apliquen a los encabezados de fila y columna, debe establecer las propiedades correspondientes de los objetos devueltos por las ColumnHeadersDefaultCellStyle propiedades y RowHeadersDefaultCellStyle en los valores predeterminados indicados para la DataGridViewCellStyle clase .
Nota:
Si los estilos visuales están habilitados, los encabezados de fila y columna, excepto TopLeftHeaderCell, son automáticamente estilizados por el tema actual, reemplazando cualquier estilo especificado por estas propiedades.
También los tipos DataGridViewButtonColumn, DataGridViewImageColumn y DataGridViewCheckBoxColumn inicializan algunos valores del objeto devuelto por la propiedad de columna DefaultCellStyle. Para obtener más información, consulte la documentación de referencia de estos tipos.
Establecer estilos dinámicamente
Para personalizar los estilos de las celdas con valores concretos, implemente un controlador para el DataGridView.CellFormatting evento. Los controladores de este evento reciben un argumento del tipo DataGridViewCellFormattingEventArgs. Este objeto contiene propiedades que permiten determinar el valor de la celda que se está formateando junto con su ubicación en el control DataGridView. Este objeto también contiene una CellStyle propiedad que se inicializa con el valor de la InheritedStyle propiedad de la celda a la que se da formato. Puede modificar las propiedades de estilo de celda para especificar la información de estilo adecuada para el valor y la ubicación de la celda.
Nota:
Los eventos RowPrePaint y RowPostPaint también reciben un objeto DataGridViewCellStyle en los datos del evento, pero en su caso, es una copia de la propiedad row InheritedStyle con fines de solo lectura, y los cambios en ella no afectan al control.
También puede modificar dinámicamente los estilos de celdas individuales en respuesta a eventos como los DataGridView.CellMouseEnter y los CellMouseLeave. Por ejemplo, en un controlador para el CellMouseEnter evento, podría almacenar el valor actual del color de fondo de la celda (recuperado a través de la propiedad de Style la celda) y, a continuación, establecerlo en un nuevo color que resaltará la celda cuando el mouse mantenga el puntero sobre él. En un controlador del evento CellMouseLeave, puede restaurar el color de fondo a su valor original.
Nota:
El almacenamiento en caché de los valores almacenados en la propiedad de Style la celda es importante independientemente de si se establece un valor de estilo determinado. Si reemplaza temporalmente una configuración de estilo, restaurarla en su estado original "no establecido" garantiza que la celda vuelva a heredar la configuración de estilo de un nivel superior. Si necesita determinar el estilo real aplicado a una celda, independientemente de si el estilo se hereda, use la propiedad InheritedStyle de la celda.
Consulte también
- DataGridView
- DataGridViewCellStyle
- DataGridView.AlternatingRowsDefaultCellStyle
- DataGridView.ColumnHeadersDefaultCellStyle
- DataGridView.DefaultCellStyle
- DataGridView.RowHeadersDefaultCellStyle
- DataGridView.RowsDefaultCellStyle
- DataGridViewBand.InheritedStyle
- DataGridViewRow.InheritedStyle
- DataGridViewColumn.InheritedStyle
- DataGridViewBand.DefaultCellStyle
- DataGridViewCell.InheritedStyle
- DataGridViewCell.Style
- DataGridView.CellFormatting
- DataGridView.CellStyleContentChanged
- DataGridView.RowPrePaint
- DataGridView.RowPostPaint
- Formato básico y estilo en el control DataGridView de formularios de Windows Forms
- Cómo establecer estilos predeterminados de celdas en el control DataGridView de Windows Forms
- Formato de datos en el control DataGridView de Windows Forms
.NET Desktop feedback