Contrôles avec prise en charge intégrée du dessin owner-drawn
Le dessin owner-drawn dans Windows Forms, qui est également appelé dessin personnalisé, est une technique permettant de changer l’apparence visuelle de certains contrôles.
Remarque
Le mot « contrôle » dans cette rubrique est utilisé pour désigner les classes qui dérivent de l’une ou l’autre Control .Component
En règle générale, Windows gère la peinture automatiquement à l’aide de paramètres de propriété tels que BackColor pour déterminer l’apparence d’un contrôle. Avec le dessin owner-drawn, vous contrôlez le processus de dessin, en changeant l’apparence des éléments qui ne sont pas disponibles via des propriétés. Par exemple, de nombreux contrôles vous permettent de définir la couleur du texte qui s’affiche, mais vous êtes limité à une seule couleur. Le dessin owner-drawn vous permet d’effectuer des opérations comme afficher une partie du texte en noir et une autre en rouge.
Dans la pratique, le dessin owner-drawn est similaire au dessin de graphiques dans un formulaire. Par exemple, vous pouvez utiliser des méthodes graphiques dans un gestionnaire pour l’événement du formulaire afin d’émuler Paint un ListBox
contrôle, mais vous devrez écrire votre propre code pour gérer toutes les interactions utilisateur. Avec le dessin owner-drawn, le contrôle utilise votre code pour dessiner son contenu, mais il conserve par ailleurs toutes ses capacités intrinsèques. Vous pouvez utiliser des méthodes graphiques pour dessiner chaque élément du contrôle ou pour personnaliser certains aspects de chaque élément, tout en utilisant l’apparence par défaut pour d’autres aspects de chaque élément.
Dessin owner-drawn dans les contrôles Windows Forms
Pour effectuer du dessin owner-drawn dans les contrôles qui le prennent en charge, vous définissez généralement une propriété, et vous gérez un ou plusieurs événements.
La plupart des contrôles qui prennent en charge le dessin owner-drawn ont une propriété OwnerDraw
ou DrawMode
qui indique si le contrôle déclenche son ou ses événements de dessin quand il se dessine lui-même.
Les contrôles qui n’ont pas une propriété OwnerDraw
ou DrawMode
incluent le contrôle DataGridView
, qui fournit des événements de dessin qui se produisent automatiquement, et le contrôle ToolStrip
, qui est dessiné à l’aide d’une classe de rendu externe qui a ses propres événements de dessin.
Il existe de nombreux types d’événements de dessin, mais un événement de dessin se produit généralement pour dessiner un élément dans un contrôle. Le gestionnaire d’événements reçoit un objet EventArgs
qui contient des informations sur l’élément dessiné et des outils que vous pouvez utiliser pour le dessiner. Par exemple, cet objet contient généralement le numéro d’index de l’élément dans sa collection parente, un Rectangle qui indique les limites d’affichage de l’élément et un Graphics objet pour appeler des méthodes de peinture. Pour certains événements, l’objet EventArgs
fournit plus d’informations sur l’élément sur les méthodes que vous pouvez appeler pour dessiner certains aspects de l’élément par défaut, comme l’arrière-plan ou un rectangle de focus.
Pour créer un contrôle réutilisable contenant vos personnalisations owner-drawn, créez une classe qui dérive d’une classe de contrôle prenant en charge le dessin owner-drawn. Au lieu de gérer les événements de dessin, incluez votre code de dessin owner-drawn dans la ou les méthodes On
nom_événement appropriées de la nouvelle classe. Vérifiez que vous appelez dans ce cas la ou les méthodes On
nom_événement de la classe de base, pour que les utilisateurs de votre contrôle puissent gérer les événements de dessin owner-drawn et fournir une personnalisation supplémentaire.
Les contrôles Windows Forms suivants prennent en charge le dessin owner-drawn dans toutes les versions du .NET Framework :
MenuItem (utilisé par MainMenu et ContextMenu)
Les contrôles suivants prennent en charge le dessin du propriétaire uniquement dans .NET Framework 2.0 :
Les contrôles suivants prennent en charge le dessin du propriétaire et sont nouveaux dans .NET Framework 2.0 :
Les sections suivantes contiennent des informations détaillées supplémentaires pour chacun de ces contrôles.
Contrôles Edit et Combobox
Les ListBox contrôles et ComboBox les contrôles vous permettent de dessiner des éléments individuels dans le contrôle en une seule taille ou en différentes tailles.
Remarque
Bien que le CheckedListBox contrôle soit dérivé du ListBox contrôle, il ne prend pas en charge le dessin du propriétaire.
Pour dessiner chaque élément de la même taille, définissez la DrawMode
propriété OwnerDrawFixed sur et gérez l’événement DrawItem
.
Pour dessiner chaque élément à l’aide d’une taille différente, définissez la DrawMode
propriété sur OwnerDrawVariable et gérez les événements et DrawItem
les MeasureItem
événements. L’événement MeasureItem
vous permet d’indiquer la taille d’un élément avant que l’événement DrawItem
se produise pour cet élément.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
MenuItem, composant
Le MenuItem composant représente un élément de menu unique dans un ou ContextMenu un MainMenu composant.
Pour dessiner un MenuItem, définissez sa OwnerDraw
propriété true
sur et gérez son DrawItem
événement. Pour personnaliser la taille de l’élément de menu avant que l’événement DrawItem
se produise, gérez l’événement MeasureItem
de l’élément.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
TabControl, contrôle
Le TabControl contrôle vous permet de dessiner des onglets individuels dans le contrôle. Le dessin propriétaire affecte uniquement les onglets ; le contenu n’est TabPage pas affecté.
Pour dessiner chaque onglet dans un TabControl, définissez la DrawMode
propriété sur OwnerDrawFixed et gérez l’événement DrawItem
. Cet événement se produit une fois pour chaque onglet uniquement quand l’onglet est visible dans le contrôle.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
ToolTip, composant
Le ToolTip composant vous permet de dessiner l’info-bulle entière lorsqu’il est affiché.
Pour dessiner un ToolTip, définissez sa OwnerDraw
propriété true
sur et gérez son Draw
événement. Pour personnaliser la taille de l’événement ToolTip avant l’événement Draw
, gérez l’événement Popup
et définissez la ToolTipSize propriété dans le gestionnaire d’événements.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
Contrôle ListView
Le ListView contrôle vous permet de dessiner des éléments individuels, des sous-éléments et des en-têtes de colonne dans le contrôle.
Pour activer le dessin owner-drawn dans le contrôle, définissez la propriété OwnerDraw
sur true
.
Pour dessiner chaque élément dans le contrôle, gérez l’événement DrawItem
.
Pour dessiner chaque en-tête de sous-élément ou de colonne dans le contrôle lorsque la View propriété est définie Detailssur , gérez les événements et DrawColumnHeader
les DrawSubItem
sous-éléments.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
Contrôle TreeView
Le TreeView contrôle vous permet de dessiner des nœuds individuels dans le contrôle.
Pour dessiner uniquement le texte affiché dans chaque nœud, définissez la DrawMode
propriété OwnerDrawText sur et gérez l’événement DrawNode
pour dessiner le texte.
Pour dessiner tous les éléments de chaque nœud, définissez la DrawMode
propriété OwnerDrawAll sur et gérez l’événement DrawNode
pour dessiner les éléments dont vous avez besoin, tels que le texte, les icônes, les zones case activée, plus et moins, et les lignes qui connectent les nœuds.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
DataGridView, contrôle
Le DataGridView contrôle vous permet de dessiner des cellules et des lignes individuelles dans le contrôle.
Pour dessiner des cellules individuelles, gérez l’événement CellPainting
.
Pour dessiner des lignes individuelles ou des éléments de ligne, gérez un des événements RowPrePaint
ou RowPostPaint
, ou les deux. L’événement RowPrePaint
se produit avant le dessin des cellules d’une ligne, et l’événement se produit RowPostPaint
après le dessin des cellules. Vous pouvez gérer ces deux événements et l’événement CellPainting
pour dessiner séparément l’arrière-plan de la ligne, les cellules individuelles et le premier plan de la ligne, ou vous pouvez fournir des personnalisations spécifiques là où vous en avez besoin et utiliser l’affichage par défaut pour les autres éléments de la ligne.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
Guide pratique pour personnaliser l’apparence des cellules du contrôle DataGridView Windows Forms
Guide pratique pour personnaliser l’apparence des lignes du contrôle DataGridView Windows Forms
ToolStrip, contrôle
ToolStrip et les contrôles dérivés vous permettent de personnaliser n’importe quel aspect de leur apparence.
Pour fournir un rendu personnalisé pour ToolStrip les contrôles, définissez la Renderer
propriété d’un ToolStripobjet , ToolStripManagerou ToolStripPanelToolStripContentPanel sur un ToolStripRenderer
objet et gérez un ou plusieurs des nombreux événements de dessin fournis par la ToolStripRenderer
classe. Vous pouvez également définir une Renderer
propriété sur une instance de votre propre classe dérivée de ToolStripRenderer
, ToolStripProfessionalRendererou ToolStripSystemRenderer qui implémente ou remplace des méthodes EventName spécifiquesOn
.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
Voir aussi
.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