Styles de cellules dans le contrôle DataGridView Windows FormsCell Styles in the Windows Forms DataGridView Control

Chaque cellule dans le contrôle DataGridView peut avoir son propre style, tel que le format de texte, la couleur d’arrière-plan, la couleur de premier plan et la police.Each cell within the DataGridView control can have its own style, such as text format, background color, foreground color, and font. En général, toutefois, plusieurs cellules partagent des caractéristiques de style particulières.Typically, however, multiple cells will share particular style characteristics.

Les groupes de cellules qui partagent des styles peuvent inclure toutes les cellules dans des lignes ou des colonnes particulières, toutes les cellules qui contiennent des valeurs particulières ou toutes les cellules du contrôle.Groups of cells that share styles may include all cells within particular rows or columns, all cells that contain particular values, or all cells in the control. Comme ces groupes se chevauchent, chaque cellule peut obtenir ses informations de style à partir de plusieurs emplacements.Because these groups overlap, each cell may get its styling information from more than one place. Par exemple, vous souhaiterez peut-être que chaque cellule d’un contrôle de DataGridView utilise la même police, mais uniquement les cellules des colonnes monétaires pour utiliser le format monétaire, et uniquement les cellules monétaires avec des nombres négatifs pour utiliser une couleur de premier plan rouge.For example, you may want every cell in a DataGridView control to use the same font, but only cells in currency columns to use currency format, and only currency cells with negative numbers to use a red foreground color.

Classe DataGridViewCellStyleThe DataGridViewCellStyle Class

La classe DataGridViewCellStyle contient les propriétés suivantes relatives au style visuel :The DataGridViewCellStyle class contains the following properties related to visual style:

Cette classe contient également les propriétés suivantes relatives à la mise en forme :This class also contains the following properties related to formatting:

Pour plus d’informations sur ces propriétés et d’autres propriétés de style de cellule, consultez la documentation de référence DataGridViewCellStyle et les rubriques figurant dans la section Voir aussi ci-dessous.For more information on these properties and other cell-style properties, see the DataGridViewCellStyle reference documentation and the topics listed in the See Also section below.

Utilisation d’objets DataGridViewCellStyleUsing DataGridViewCellStyle Objects

Vous pouvez récupérer des objets DataGridViewCellStyle à partir de différentes propriétés des classes DataGridView, DataGridViewColumn, DataGridViewRowet DataGridViewCell et leurs classes dérivées.You can retrieve DataGridViewCellStyle objects from various properties of the DataGridView, DataGridViewColumn, DataGridViewRow, and DataGridViewCell classes and their derived classes. Si l’une de ces propriétés n’a pas encore été définie, la récupération de sa valeur créera un nouvel objet DataGridViewCellStyle.If one of these properties has not yet been set, retrieving its value will create a new DataGridViewCellStyle object. Vous pouvez également instancier vos propres objets DataGridViewCellStyle et les assigner à ces propriétés.You can also instantiate your own DataGridViewCellStyle objects and assign them to these properties.

Vous pouvez éviter la duplication inutile des informations de style en partageant des objets DataGridViewCellStyle entre plusieurs éléments DataGridView.You can avoid unnecessary duplication of style information by sharing DataGridViewCellStyle objects among multiple DataGridView elements. Étant donné que les styles définis au niveau des niveaux de contrôle, de colonne et de ligne sont filtrés jusqu’au niveau de la cellule, vous pouvez également éviter la duplication de style en définissant uniquement les propriétés de style à chaque niveau qui diffèrent des niveaux ci-dessus.Because the styles set at the control, column, and row levels filter down through each level to the cell level, you can also avoid style duplication by setting only those style properties at each level that differ from the levels above. Cela est décrit plus en détail dans la section héritage de style qui suit.This is described in more detail in the Style Inheritance section that follows.

Le tableau suivant répertorie les propriétés principales qui obtiennent ou définissent des objets DataGridViewCellStyle.The following table lists the primary properties that get or set DataGridViewCellStyle objects.

PropriétéProperty ClassesClasses DescriptionDescription
DefaultCellStyle DataGridView, DataGridViewColumn, DataGridViewRowet classes dérivéesDataGridView, DataGridViewColumn, DataGridViewRow, and derived classes Obtient ou définit les styles par défaut utilisés par toutes les cellules du contrôle entier (y compris les cellules d’en-tête), dans une colonne ou dans une ligne.Gets or sets default styles used by all cells in the entire control (including header cells), in a column, or in a row.
RowsDefaultCellStyle DataGridView Obtient ou définit les styles de cellules par défaut utilisés par toutes les lignes du contrôle.Gets or sets default cell styles used by all rows in the control. Cela n’inclut pas les cellules d’en-tête.This does not include header cells.
AlternatingRowsDefaultCellStyle DataGridView Obtient ou définit les styles de cellules par défaut utilisés par les lignes en alternance dans le contrôle.Gets or sets default cell styles used by alternating rows in the control. Utilisé pour créer un effet de type comptabilité.Used to create a ledger-like effect.
RowHeadersDefaultCellStyle DataGridView Obtient ou définit les styles de cellules par défaut utilisés par les en-têtes de lignes du contrôle.Gets or sets default cell styles used by the control's row headers. Remplacé par le thème actuel si les styles visuels sont activés.Overridden by the current theme if visual styles are enabled.
ColumnHeadersDefaultCellStyle DataGridView Obtient ou définit les styles de cellules par défaut utilisés par les en-têtes de colonnes du contrôle.Gets or sets default cell styles used by the control's column headers. Remplacé par le thème actuel si les styles visuels sont activés.Overridden by the current theme if visual styles are enabled.
Style classes DataGridViewCell et dérivéesDataGridViewCell and derived classes Obtient ou définit les styles spécifiés au niveau de la cellule.Gets or sets styles specified at the cell level. Ces styles remplacent ceux hérités des niveaux supérieurs.These styles override those inherited from higher levels.
InheritedStyle DataGridViewCell, DataGridViewRow, DataGridViewColumnet classes dérivéesDataGridViewCell, DataGridViewRow, DataGridViewColumn, and derived classes Obtient tous les styles actuellement appliqués à la cellule, à la ligne ou à la colonne, y compris les styles hérités de niveaux supérieurs.Gets all the styles currently applied to the cell, row, or column, including styles inherited from higher levels.

Comme indiqué ci-dessus, l’obtention de la valeur d’une propriété de style instancie automatiquement un nouvel objet DataGridViewCellStyle si la propriété n’a pas été définie précédemment.As mentioned above, getting the value of a style property automatically instantiates a new DataGridViewCellStyle object if the property has not been previously set. Pour éviter de créer ces objets inutilement, les classes de lignes et de colonnes ont une propriété HasDefaultCellStyle que vous pouvez vérifier pour déterminer si la propriété DefaultCellStyle a été définie.To avoid creating these objects unnecessarily, the row and column classes have a HasDefaultCellStyle property that you can check to determine whether the DefaultCellStyle property has been set. De même, les classes de cellule ont une propriété HasStyle qui indique si la propriété Style a été définie.Similarly, the cell classes have a HasStyle property that indicates whether the Style property has been set.

Chacune des propriétés de style a un événement PropertyNameChanged correspondant sur le contrôle DataGridView.Each of the style properties has a corresponding PropertyNameChanged event on the DataGridView control. Pour les propriétés de ligne, de colonne et de cellule, le nom de l’événement commence par «Row», «Column» ou «Cell» (par exemple, RowDefaultCellStyleChanged).For row, column, and cell properties, the name of the event begins with "Row", "Column", or "Cell" (for example, RowDefaultCellStyleChanged). Chacun de ces événements se produit lorsque la propriété de style correspondante est définie sur un objet de DataGridViewCellStyle différent.Each of these events occurs when the corresponding style property is set to a different DataGridViewCellStyle object. Ces événements ne se produisent pas lorsque vous récupérez un objet DataGridViewCellStyle à partir d’une propriété de style et modifiez ses valeurs de propriété.These events do not occur when you retrieve a DataGridViewCellStyle object from a style property and modify its property values. Pour répondre aux modifications apportées aux objets de style de cellule eux-mêmes, gérez l’événement CellStyleContentChanged.To respond to changes to the cell style objects themselves, handle the CellStyleContentChanged event.

Héritage de styleStyle Inheritance

Chaque DataGridViewCell obtient son apparence à partir de sa propriété InheritedStyle.Each DataGridViewCell gets its appearance from its InheritedStyle property. L’objet DataGridViewCellStyle retourné par cette propriété hérite ses valeurs d’une hiérarchie de propriétés de type DataGridViewCellStyle.The DataGridViewCellStyle object returned by this property inherits its values from a hierarchy of properties of type DataGridViewCellStyle. Ces propriétés sont répertoriées ci-dessous dans l’ordre dans lequel les InheritedStyle pour les cellules non-en-tête obtiennent ses valeurs.These properties are listed below in the order in which the InheritedStyle for non-header cells obtains its values.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes avec des numéros d’index impairs)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

Pour les cellules d’en-tête de ligne et de colonne, la propriété InheritedStyle est remplie par des valeurs de la liste suivante de propriétés sources dans l’ordre indiqué.For row and column header cells, the InheritedStyle property is populated by values from the following list of source properties in the given order.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle ou DataGridView.RowHeadersDefaultCellStyleDataGridView.ColumnHeadersDefaultCellStyle or DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Le diagramme suivant illustre ce processus.The following diagram illustrates this process.

Propriétés de type DataGridViewCellStyleProperties of type DataGridViewCellStyle

Vous pouvez également accéder aux styles hérités par des lignes et des colonnes spécifiques.You can also access the styles inherited by specific rows and columns. La propriété Column InheritedStyle hérite ses valeurs des propriétés suivantes.The column InheritedStyle property inherits its values from the following properties.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

La propriété Row InheritedStyle hérite ses valeurs des propriétés suivantes.The row InheritedStyle property inherits its values from the following properties.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes avec des numéros d’index impairs)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Pour chaque propriété d’un objet DataGridViewCellStyle retourné par une propriété InheritedStyle, la valeur de la propriété est obtenue à partir du premier style de cellule dans la liste appropriée dont la propriété correspondante est définie sur une valeur autre que les valeurs par défaut de la classe DataGridViewCellStyle.For each property in a DataGridViewCellStyle object returned by an InheritedStyle property, the property value is obtained from the first cell style in the appropriate list that has the corresponding property set to a value other than the DataGridViewCellStyle class defaults.

Le tableau suivant illustre la façon dont la valeur de la propriété ForeColor pour une cellule d’exemple est héritée de la colonne qui la contient.The following table illustrates how the ForeColor property value for an example cell is inherited from its containing column.

Propriété de type DataGridViewCellStyleProperty of type DataGridViewCellStyle Exemple de valeur ForeColor pour l’objet récupéréExample ForeColor value for retrieved object
DataGridViewCell.Style Color.Empty
DataGridViewRow.DefaultCellStyle Color.Red
DataGridView.AlternatingRowsDefaultCellStyle Color.Empty
DataGridView.RowsDefaultCellStyle Color.Empty
DataGridViewColumn.DefaultCellStyle Color.DarkBlue
DataGridView.DefaultCellStyle Color.Black

Dans ce cas, la valeur Color.Red de la ligne de la cellule est la première valeur réelle de la liste.In this case, the Color.Red value from the cell's row is the first real value on the list. Cela devient la valeur de la propriété ForeColor de la InheritedStylede la cellule.This becomes the ForeColor property value of the cell's InheritedStyle.

Le diagramme suivant illustre comment différentes propriétés de DataGridViewCellStyle peuvent hériter de leurs valeurs à partir de différents emplacements.The following diagram illustrates how different DataGridViewCellStyle properties can inherit their values from different places.

Héritage de-la valeur de propriété DataGridViewDataGridView property-value inheritance

En tirant parti de l’héritage de style, vous pouvez fournir les styles appropriés pour l’ensemble du contrôle sans avoir à spécifier les mêmes informations à plusieurs emplacements.By taking advantage of style inheritance, you can provide appropriate styles for the entire control without having to specify the same information in multiple places.

Bien que les cellules d’en-tête participent à l’héritage de style comme décrit, les objets retournés par les propriétés ColumnHeadersDefaultCellStyle et RowHeadersDefaultCellStyle du contrôle DataGridView ont des valeurs de propriété initiales qui remplacent les valeurs de propriété de l’objet retourné par la propriété DefaultCellStyle.Although header cells participate in style inheritance as described, the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties of the DataGridView control have initial property values that override the property values of the object returned by the DefaultCellStyle property. Si vous souhaitez que les propriétés définies pour l’objet retourné par la propriété DefaultCellStyle s’appliquent aux en-têtes de ligne et de colonne, vous devez définir les propriétés correspondantes des objets retournés par les propriétés ColumnHeadersDefaultCellStyle et RowHeadersDefaultCellStyle aux valeurs par défaut indiquées pour la classe DataGridViewCellStyle.If you want the properties set for the object returned by the DefaultCellStyle property to apply to row and column headers, you must set the corresponding properties of the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties to the defaults indicated for the DataGridViewCellStyle class.

Notes

Si les styles visuels sont activés, les en-têtes de lignes et de colonnes (à l’exception de la TopLeftHeaderCell) sont automatiquement mis en forme par le thème actuel, en substituant les styles spécifiés par ces propriétés.If visual styles are enabled, the row and column headers (except for the TopLeftHeaderCell) are automatically styled by the current theme, overriding any styles specified by these properties.

Les types DataGridViewButtonColumn, DataGridViewImageColumnet DataGridViewCheckBoxColumn initialisent également certaines valeurs de l’objet retourné par la propriété DefaultCellStyle de la colonne.The DataGridViewButtonColumn, DataGridViewImageColumn, and DataGridViewCheckBoxColumn types also initialize some values of the object returned by the column DefaultCellStyle property. Pour plus d’informations, consultez la documentation de référence pour ces types.For more information, see the reference documentation for these types.

Définir des styles de manière dynamiqueSetting Styles Dynamically

Pour personnaliser les styles de cellules avec des valeurs particulières, implémentez un gestionnaire pour l’événement DataGridView.CellFormatting.To customize the styles of cells with particular values, implement a handler for the DataGridView.CellFormatting event. Les gestionnaires de cet événement reçoivent un argument du type DataGridViewCellFormattingEventArgs.Handlers for this event receive an argument of the DataGridViewCellFormattingEventArgs type. Cet objet contient des propriétés qui vous permettent de déterminer la valeur de la cellule mise en forme, ainsi que son emplacement dans le contrôle de DataGridView.This object contains properties that let you determine the value of the cell being formatted along with its location in the DataGridView control. Cet objet contient également une propriété CellStyle qui est initialisée à la valeur de la propriété InheritedStyle de la cellule mise en forme.This object also contains a CellStyle property that is initialized to the value of the InheritedStyle property of the cell being formatted. Vous pouvez modifier les propriétés de style de la cellule pour spécifier les informations de style appropriées à la valeur et à l’emplacement de la cellule.You can modify the cell style properties to specify style information appropriate to the cell value and location.

Notes

Les événements RowPrePaint et RowPostPaint reçoivent également un objet DataGridViewCellStyle dans les données d’événement, mais dans le cas contraire, il s’agit d’une copie de la propriété Row InheritedStyle à des fins de lecture seule, et les modifications apportées n’affectent pas le contrôle.The RowPrePaint and RowPostPaint events also receive a DataGridViewCellStyle object in the event data, but in their case, it is a copy of the row InheritedStyle property for read-only purposes, and changes to it do not affect the control.

Vous pouvez également modifier dynamiquement les styles de cellules individuelles en réponse à des événements tels que les événements DataGridView.CellMouseEnter et CellMouseLeave.You can also dynamically modify the styles of individual cells in response to events such as the DataGridView.CellMouseEnter and CellMouseLeave events. Par exemple, dans un gestionnaire pour l’événement CellMouseEnter, vous pouvez stocker la valeur actuelle de la couleur d’arrière-plan de la cellule (récupérée via la propriété Style de la cellule), puis lui attribuer une nouvelle couleur qui met en surbrillance la cellule lorsque la souris pointe sur celle-ci.For example, in a handler for the CellMouseEnter event, you could store the current value of the cell background color (retrieved through the cell's Style property), then set it to a new color that will highlight the cell when the mouse hovers over it. Dans un gestionnaire pour l’événement CellMouseLeave, vous pouvez restaurer la couleur d’arrière-plan à la valeur d’origine.In a handler for the CellMouseLeave event, you can then restore the background color to the original value.

Notes

La mise en cache des valeurs stockées dans la propriété Style de la cellule est importante, qu’une valeur de style particulière soit définie ou non.Caching the values stored in the cell's Style property is important regardless of whether a particular style value is set. Si vous remplacez temporairement un paramètre de style, le fait de le restaurer à son état d’origine « non défini » garantit que la cellule revient à hériter du paramètre de style d’un niveau supérieur.If you temporarily replace a style setting, restoring it to its original "not set" state ensures that the cell will go back to inheriting the style setting from a higher level. Si vous devez déterminer le style réel en vigueur pour une cellule, que le style soit hérité ou non, utilisez la propriété InheritedStyle de la cellule.If you need to determine the actual style in effect for a cell regardless of whether the style is inherited, use the cell's InheritedStyle property.

Voir aussiSee also