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. |
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. |
||
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. |
||
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. |
||
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. |
||
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.
DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes portant des numéros d'index impairs)
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é.
Le schéma suivant illustre ce processus.
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.
La propriété InheritedStyle de ligne hérite ses valeurs des propriétés suivantes.
DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes portant des numéros d'index impairs)
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é |
---|---|
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.
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.AlternatingRowsDefaultCellStyle
DataGridView.ColumnHeadersDefaultCellStyle
DataGridView.RowHeadersDefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridViewBand.InheritedStyle
DataGridViewRow.InheritedStyle
DataGridViewColumn.InheritedStyle
DataGridViewBand.DefaultCellStyle
DataGridViewCell.InheritedStyle
DataGridView.CellStyleContentChanged
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