Styles de cellules dans le contrôle DataGridView Windows Forms
Chaque cellule du DataGridView contrôle 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. En règle générale, toutefois, plusieurs cellules partageront des caractéristiques de style particulières.
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. Étant donné que ces groupes se chevauchent, chaque cellule peut obtenir ses informations de style à partir de plusieurs emplacements. Par exemple, vous souhaiterez peut-être que chaque cellule d’un DataGridView contrôle utilise la même police, mais seules les cellules des colonnes monétaires utilisent le format monétaire, et seules les cellules monétaires avec des nombres négatifs utilisent une couleur de premier plan rouge.
La classe DataGridViewCellStyle
La DataGridViewCellStyle classe contient les propriétés suivantes liées au style visuel :
Cette classe contient également les propriétés suivantes liées à 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 DataGridViewCellStyle documentation de référence et les rubriques répertoriées dans la section Voir aussi ci-dessous.
Utilisation des objets DataGridViewCellStyle
Vous pouvez récupérer des DataGridViewCellStyle objets à partir de différentes propriétés des DataGridViewDataGridViewColumnclasses, et DataGridViewRowDataGridViewCell des classes 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ée un DataGridViewCellStyle objet. Vous pouvez également instancier vos propres DataGridViewCellStyle objets et les affecter à ces propriétés.
Vous pouvez éviter une duplication inutile des informations de style en partageant DataGridViewCellStyle des objets entre plusieurs DataGridView éléments. Étant donné que les styles définis au niveau du contrôle, de la colonne et des lignes filtrent à travers chaque niveau au niveau de la cellule, vous pouvez également éviter la duplication de style en définissant uniquement ces propriétés de style à chaque niveau qui diffèrent des niveaux ci-dessus. Cette procédure est décrite plus en détail dans la section Héritage de style qui suit.
Le tableau suivant répertorie les propriétés principales qui obtiennent ou définissent DataGridViewCellStyle des objets.
Propriété | Classes | Description |
---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRowet 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 cellule 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 cellule par défaut utilisés par les lignes alternées dans le contrôle. Utilisé pour créer un effet semblable au registre. |
RowHeadersDefaultCellStyle | DataGridView | Obtient ou définit les styles de cellule par défaut utilisés par les en-têtes de ligne du contrôle. Substitué par le thème actuel si les styles visuels sont activés. |
ColumnHeadersDefaultCellStyle | DataGridView | Obtient ou définit les styles de cellule par défaut utilisés par les en-têtes de colonne du contrôle. Substitué par le thème actuel si les styles visuels sont activés. |
Style | DataGridViewCell et les classes dérivées | Obtient ou définit des styles spécifiés au niveau de la cellule. Ces styles remplacent ceux hérités de niveaux supérieurs. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumnet classes dérivées | 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. |
Comme mentionné ci-dessus, l’obtention de la valeur d’une propriété de style instancie automatiquement un nouvel DataGridViewCellStyle objet 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 HasDefaultCellStyle propriété que vous pouvez case activée pour déterminer si la DefaultCellStyle propriété a été définie. De même, les classes de cellule ont une HasStyle propriété qui indique si la Style propriété a été définie.
Chacune des propriétés de style a un événement PropertyNameChanged
correspondant sur le DataGridView contrôle. 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 est définie sur un objet différent DataGridViewCellStyle . Ces événements ne se produisent pas lorsque vous récupérez un DataGridViewCellStyle objet à partir d’une propriété de style et modifiez ses valeurs de propriété. Pour répondre aux modifications apportées aux objets de style de cellule eux-mêmes, gérez l’événement CellStyleContentChanged .
Héritage de style
Chacune DataGridViewCell obtient son apparence de sa InheritedStyle propriété. L’objet DataGridViewCellStyle retourné par cette propriété hérite de 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 les InheritedStyle cellules non-en-tête obtiennent ses valeurs.
DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes avec des nombres d’index impairs)
Pour les cellules d’en-tête de ligne et de colonne, la InheritedStyle propriété est remplie par des valeurs de la liste suivante de propriétés sources dans l’ordre donné.
Le diagramme suivant illustre ce processus.
Vous pouvez également accéder aux styles hérités par des lignes et des colonnes spécifiques. La propriété de colonne InheritedStyle hérite de ses valeurs des propriétés suivantes.
La propriété de ligne InheritedStyle hérite de ses valeurs des propriétés suivantes.
DataGridView.AlternatingRowsDefaultCellStyle (uniquement pour les cellules des lignes avec des nombres d’index impairs)
Pour chaque propriété d’un DataGridViewCellStyle objet retourné par une InheritedStyle
propriété, la valeur de propriété est obtenue à partir du premier style de cellule dans la liste appropriée dont la propriété correspondante a la valeur définie sur une valeur autre que la DataGridViewCellStyle classe par défaut.
Le tableau suivant illustre la façon dont la ForeColor valeur de propriété d’un exemple de cellule est héritée de sa colonne contenante.
Propriété de type DataGridViewCellStyle |
Exemple de ForeColor valeur pour l’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 Color.Red valeur de la ligne de la cellule est la première valeur réelle de la liste. Cela devient la ForeColor valeur de propriété de la cellule InheritedStyle.
Le diagramme suivant illustre la façon dont différentes DataGridViewCellStyle propriétés peuvent hériter de leurs valeurs à partir de différents emplacements.
En tirant parti de l’héritage de style, vous pouvez fournir des styles appropriés pour l’ensemble du contrôle sans avoir à spécifier les mêmes informations dans plusieurs emplacements.
Bien que les cellules d’en-tête participent à l’héritage de style comme décrit, les objets retournés par les ColumnHeadersDefaultCellStyle propriétés du RowHeadersDefaultCellStyleDataGridView contrôle ont des valeurs de propriété initiales qui remplacent les valeurs de propriété de l’objet retourné par la DefaultCellStyle propriété. Si vous souhaitez que les propriétés définies pour l’objet retourné par la DefaultCellStyle propriété 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 ColumnHeadersDefaultCellStyle propriétés RowHeadersDefaultCellStyle par défaut indiquées pour la DataGridViewCellStyle classe.
Remarque
Si les styles visuels sont activés, les en-têtes de ligne et de colonne (à l’exception du TopLeftHeaderCell) sont automatiquement styletés par le thème actuel, en remplaçant tous les styles spécifiés par ces propriétés.
Les DataGridViewButtonColumntypes et DataGridViewCheckBoxColumn les types DataGridViewImageColumninitialisent également certaines valeurs de l’objet retourné par la propriété de colonneDefaultCellStyle. Pour plus d’informations, consultez la documentation de référence pour ces types.
Définition dynamique des styles
Pour personnaliser les styles de cellules avec des valeurs particulières, implémentez un gestionnaire pour l’événement DataGridView.CellFormatting . Les gestionnaires de cet événement reçoivent un argument du 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 DataGridView contrôle. Cet objet contient également une CellStyle propriété initialisée à la valeur de la InheritedStyle propriété de la cellule mise en forme. Vous pouvez modifier les propriétés de style de cellule pour spécifier les informations de style appropriées à la valeur et à l’emplacement de la cellule.
Remarque
Les RowPrePaint événements et RowPostPaint les événements reçoivent également un DataGridViewCellStyle objet dans les données d’événement, mais dans leur cas, il s’agit d’une copie de la propriété de ligne InheritedStyle à des fins de lecture seule, et les modifications apportées à celui-ci 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 et CellMouseLeave les DataGridView.CellMouseEnter événements. 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é de Style la cellule), puis la définir sur une nouvelle couleur qui met en surbrillance la cellule lorsque la souris pointe dessus. Dans un gestionnaire pour l’événement CellMouseLeave , vous pouvez ensuite restaurer la couleur d’arrière-plan sur la valeur d’origine.
Remarque
La mise en cache des valeurs stockées dans la propriété de Style la cellule est importante, qu’une valeur de style particulière soit définie. Si vous remplacez temporairement un paramètre de style, la restauration à son état « non défini » d’origine garantit que la cellule revient à hériter 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 le style soit hérité, utilisez la propriété de InheritedStyle la cellule.
Voir aussi
- 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
- Mises en forme et styles de base dans le contrôle DataGridView Windows Forms
- Guide pratique pour définir les styles de cellules par défaut pour le contrôle DataGridView Windows Forms
- Mise en forme de données dans le contrôle DataGridView Windows Forms
.NET Desktop feedback
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour