Partager via


Styles de cellules dans le contrôle DataGridView Windows Forms

Chaque cellule du contrôle DataGridView peut avoir son propre style, tel qu'un format de texte, une couleur d'arrière-plan, une couleur de premier plan et une police. Toutefois, en règle générale, plusieurs cellules partageront des caractéristiques de style spécifiques.

Les groupes de cellules qui partagent des styles peuvent inclure toutes les cellules de lignes ou colonnes spécifiques, toutes les cellules qui contiennent des valeurs particulières, ou toutes les cellules du contrôle. Comme ces groupes se chevauchent, chaque cellule peut obtenir ses informations de style à partir de plusieurs emplacements. Par exemple, vous pouvez souhaiter que toutes les cellules d'un contrôle DataGridView utilisent la même police, mais que seules les cellules des colonnes de devises utilisent le format monétaire, et que seules les cellules de devises contenant des nombres négatifs utilisent une couleur de premier plan rouge.

Classe DataGridViewCellStyle

La classe DataGridViewCellStyle contient les propriétés suivantes relatives au style visuel :

Cette classe contient également les propriétés suivantes relatives à la mise en forme :

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 répertoriées dans la section Voir aussi ci-dessous.

Utilisation d'objets DataGridViewCellStyle

Vous pouvez récupérer des objets DataGridViewCellStyle de plusieurs propriétés des classes DataGridView, DataGridViewColumn, DataGridViewRow et DataGridViewCell, et de leurs classes dérivées. 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. Vous pouvez également instancier vos propres objets DataGridViewCellStyle et les assigner à ces propriétés.

Vous pouvez éviter une duplication inutile d'informations de style en partageant des objets DataGridViewCellStyle entre plusieurs éléments DataGridView. Les styles définis au niveau des contrôles, des colonnes et des lignes effectuant un filtrage sur chaque niveau jusqu'au niveau de la cellule, vous pouvez également éviter la duplication de style en définissant uniquement, pour chaque niveau, les propriétés de style qui diffèrent des niveaux au-dessus. Cela est décrit de façon détaillée dans la section Héritage de style qui suit.

Le tableau suivant répertorie les principales propriétés qui permettent d'obtenir ou de définir des objets DataGridViewCellStyle.

Propriété

Classes

Description

DefaultCellStyle

DataGridView, DataGridViewColumn, DataGridViewRow et classes dérivées

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.

RowsDefaultCellStyle

DataGridView

Obtient ou définit les styles de cellules par défaut utilisés par toutes les lignes du contrôle. Cela n'inclut pas les cellules d'en-tête.

AlternatingRowsDefaultCellStyle

DataGridView

Obtient ou définit les styles de cellules par défaut utilisés par les lignes alternées du contrôle. Utilisée pour créer un effet de livre comptable.

RowHeadersDefaultCellStyle

DataGridView

Obtient ou définit des styles de cellules par défaut utilisés par les en-têtes de ligne du contrôle. Substitution par le thème actuel si les styles visuels sont activés.

ColumnHeadersDefaultCellStyle

DataGridView

Obtient ou définit des styles de cellules par défaut utilisés par les en-têtes de colonne du contrôle. Substitution par le thème actuel si les styles visuels sont activés.

Style

DataGridViewCell et classes dérivées

Obtient ou définit des styles spécifiés au niveau de la cellule. Ces styles se substituent à ceux hérités des niveaux supérieurs.

InheritedStyle

DataGridViewCell, DataGridViewRow, DataGridViewColumn et classes dérivées

Permet d'obtenir tous les styles appliqués actuellement à la cellule, ligne ou colonne, y compris les styles hérités de niveaux supérieurs.

Comme mentionné 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. Pour éviter de créer ces objets inutilement, les classes de ligne et de colonne ont une propriété HasDefaultCellStyle que vous pouvez examiner pour déterminer si la propriété DefaultCellStyle a été définie. De la même façon, les classes de cellule ont une propriété HasStyle qui indique si la propriété Style a été définie.

Chacune des propriétés de style possède un événement NomPropriétéChanged correspondant dans le contrôle DataGridView. 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). Chacun de ces événements se produit lorsque la propriété de style correspondante a pour valeur un objet DataGridViewCellStyle différent. Ces événements ne se produisent pas lorsque vous récupérez un objet DataGridViewCellStyle à partir d'une propriété de style et que vous modifiez ses valeurs de propriété. Pour répondre aux modifications apportées aux objets de style de la cellule eux-mêmes, gérez l'événement CellStyleContentChanged.

Héritage de style

Chaque DataGridViewCell obtient son aspect à partir de sa propriété InheritedStyle. L'objet DataGridViewCellStyle retourné par cette propriété hérite ses valeurs d'une hiérarchie de propriétés de type DataGridViewCellStyle. Ces propriétés sont répertoriées ci-dessous dans l'ordre dans lequel le InheritedStyle des cellules autres que les cellules d'en-tête obtient ses valeurs.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes portant des numéros d'index impairs)

  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 à l'aide des valeurs figurant dans la liste suivante des propriétés de la source, dans l'ordre indiqué.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle ou DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Le schéma suivant illustre ce processus.

Propriétés du type DataGridViewCellStyle

Vous pouvez également accéder aux styles hérités par des lignes et colonnes spécifiques. La propriété InheritedStyle de colonne hérite ses valeurs des propriétés suivantes.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

La propriété InheritedStyle de ligne hérite ses valeurs des propriétés suivantes.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes portant des numéros d'index impairs)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Pour chaque propriété d'un objet DataGridViewCellStyle retourné par une propriété InheritedStyle, la valeur de propriété est obtenue à partir du premier style de cellule figurant dans la liste appropriée (contenant une propriété dont la valeur est autre que la valeur par défaut de la classe DataGridViewCellStyle).

Le tableau suivant illustre la façon dont la valeur de propriété ForeColor pour une cellule d'exemple est héritée de sa colonne conteneur.

Propriété de type DataGridViewCellStyle

Valeur ForeColor d'exemple pour un objet récupéré

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. Elle devient la valeur de propriété ForeColor de InheritedStyle de la cellule.

Le schéma suivant illustre comment des propriétés DataGridViewCellStyle différentes peuvent hériter leurs valeurs d'emplacements différents.

Propriété DataGridView - héritage de valeur

Grâce à l'héritage de style, vous pouvez fournir des styles appropriés pour le contrôle entier sans devoir spécifier les mêmes informations à différents emplacements.

Bien que les cellules d'en-tête participent à l'héritage de style comme mentionné, les objets retournés par les propriétés ColumnHeadersDefaultCellStyle et RowHeadersDefaultCellStyle du contrôle DataGridView ont des valeurs de propriété initiales qui se substituent aux valeurs de propriété de l'objet retourné par la propriété DefaultCellStyle. 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 affecter aux propriétés correspondantes des objets retournés par les propriétés ColumnHeadersDefaultCellStyle et RowHeadersDefaultCellStyle les valeurs par défaut indiquées pour la classe DataGridViewCellStyle.

Notes

Si les styles visuels sont activés, les en-têtes de ligne et de colonne (à l'exception de TopLeftHeaderCell), reçoivent automatiquement un style du thème actuel, en substituant tous les styles spécifiés par ces propriétés.

Les types DataGridViewButtonColumn, DataGridViewImageColumn et DataGridViewCheckBoxColumn initialisent également quelques valeurs de l'objet retourné par la propriété DefaultCellStyle de la colonne. Pour plus d'informations, consultez la documentation de référence correspondant à ces types.

Définition dynamique des styles

Pour personnaliser les styles de cellules à l'aide de valeurs spécifiques, implémentez un gestionnaire pour l'événement DataGridView.CellFormatting. Les gestionnaires chargés de cet événement reçoivent un argument du type DataGridViewCellFormattingEventArgs. Cet objet contient les propriétés qui vous permettent de déterminer la valeur de la cellule en cours de mise en forme ainsi que son emplacement dans le contrôle DataGridView. Il contient également une propriété CellStyle initialisée à l'aide de la valeur de la propriété InheritedStyle de la cellule mise en forme. Vous pouvez modifier les propriétés de style de la cellule pour spécifier des informations de style adaptées à la valeur de la cellule et à son emplacement.

Notes

Les événements RowPrePaint et RowPostPaint reçoivent également un objet DataGridViewCellStyle dans les données d'événement, mais dans leur cas, il s'agit d'une copie de la propriété InheritedStyle de la ligne à des fins de lecture seule, et les modifications apportées n'affectent pas le contrôle.

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. Par exemple, vous pouvez stocker la valeur actuelle de la couleur d'arrière-plan de cellule (récupérée via la propriété Style de la cellule) dans un gestionnaire pour l'événement CellMouseEnter, puis définir une nouvelle couleur qui mettra la cellule en surbrillance lorsque la souris se trouvera sur elle. Dans un gestionnaire pour l'événement CellMouseLeave, vous pouvez ensuite restaurer la valeur d'origine comme couleur d'arrière-plan.

Notes

La mise en cache des valeurs stockées dans la propriété Style de la cellule est importante, qu'une valeur de style spécifique ait été définie ou non. Si vous remplacez temporairement un paramètre de style en restaurant son état d'origine « non défini », cela garantit que la cellule héritera de nouveau du paramètre de style d'un niveau supérieur. Si vous devez déterminer le style réel en vigueur pour une cellule, que ce style ait été hérité ou non, utilisez la propriété InheritedStyle de la cellule.

Voir aussi

Tâches

Comment : définir les styles de cellules par défaut pour le contrôle DataGridView Windows Forms

Référence

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

Concepts

Mise en forme de données dans le contrôle DataGridView Windows Forms

Autres ressources

Mises en forme et styles de base dans le contrôle DataGridView Windows Forms