Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le dessin propriétaire dans Windows Forms, également appelé dessin personnalisé, est une technique permettant de modifier 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 soit de Control, soit de 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 par le propriétaire, vous prenez en charge le processus de peinture, en modifiant les éléments visuels qui ne peuvent être modifiés à l'aide de propriétés. Par exemple, de nombreux contrôles vous permettent de définir la couleur du texte affiché, mais vous êtes limité à une seule couleur. Le dessin propriétaire vous permet d’effectuer des opérations telles que l’affichage d’une partie du texte en noir et en rouge.
Dans la pratique, le dessin par le propriétaire est similaire au dessin de graphiques sur un formulaire. Par exemple, vous pourriez utiliser des méthodes graphiques dans un gestionnaire pour l’événement du formulaire afin d'émuler un Paint contrôle ListBox
, mais vous devrez écrire votre propre code pour gérer toutes les interactions utilisateur. Avec le dessin du propriétaire, le contrôle utilise votre code pour dessiner son contenu, mais conserve sinon toutes ses fonctionnalités intrinsèques. Vous pouvez utiliser des méthodes graphiques pour dessiner chaque élément dans le contrôle ou personnaliser certains aspects de chaque élément pendant que vous utilisez l’apparence par défaut pour d’autres aspects de chaque élément.
Dessin personnalisé dans les contrôles Windows Forms
Pour effectuer un dessin propriétaire dans des contrôles qui le prennent en charge, vous devez généralement définir une propriété et gérer un ou plusieurs événements.
La plupart des contrôles qui prennent en charge le dessin propriétaire ont une propriété OwnerDraw
ou DrawMode
qui indique si le contrôle déclenche son événement ou ses événements liés au dessin lorsqu’il s'affiche.
Les contrôles qui n’ont pas de OwnerDraw
propriété ou DrawMode
incluent le DataGridView
contrôle, qui fournit des événements de dessin qui se produisent automatiquement, et le ToolStrip
contrôle, qui est dessiné à l’aide d’une classe de rendu externe qui a ses propres événements liés au dessin.
Il existe de nombreux types d’événements de dessin différents, mais un événement de dessin classique se produit afin de dessiner un élément unique dans un contrôle. Le gestionnaire d’événements reçoit un EventArgs
objet qui contient des informations sur l’élément dessiné et les 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 des informations supplémentaires sur l’élément et les méthodes que vous pouvez appeler pour peindre certains aspects de l’élément par défaut, tels que l’arrière-plan ou un rectangle de focus.
Pour créer un contrôle réutilisable qui contient vos personnalisations dessinées par le propriétaire, créez une classe qui dérive d’une classe de contrôle qui prend en charge le dessin propriétaire. Au lieu de gérer les événements de dessin, incluez votre code de dessin propriétaire dans les remplacements de la méthode ou des méthodes On
appropriées dans la nouvelle classe. Veillez à appeler la méthode ou les méthodes On
de la classe de base dans ce cas afin que les utilisateurs de votre contrôle puissent gérer les événements de dessin de propriétaire et fournir une personnalisation supplémentaire.
Les contrôles Windows Forms suivants prennent en charge le dessin personnalisé 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 fournissent des détails supplémentaires pour chacun de ces contrôles.
Contrôles ListBox et ComboBox
Les contrôles ListBox et ComboBox vous permettent de dessiner des éléments individuels dans le contrôleur soit tous d'une seule taille, soit de tailles variées.
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 propriété DrawMode
à OwnerDrawFixed 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 MeasureItem
les DrawItem
événements. L’événement MeasureItem
vous permet d’indiquer la taille d’un élément avant que l’événement DrawItem
ne se produise pour cet élément.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
Composant menuitem
Le MenuItem composant représente un élément de menu unique dans un ou MainMenu un ContextMenu composant.
Pour dessiner un MenuItem, définissez la propriété OwnerDraw
à true
et gérez l'événement DrawItem
. Pour personnaliser la taille d'un élément de menu avant que l'événement DrawItem
se produise, traitez 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 :
Contrôle TabControl
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 lorsque 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 :
Composant ToolTip
Le ToolTip composant vous permet de dessiner l’info-bulle entière lorsqu’il est affiché.
Pour dessiner un ToolTip, définissez la propriété OwnerDraw
à true
et gérez l'événement Draw
. 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 du propriétaire dans le contrôle, définissez la OwnerDraw
propriété sur true
.
Pour dessiner chaque élément dans le contrôle, gérez l’événement DrawItem
.
Pour dessiner chaque sous-élément ou l'en-tête de colonne dans le contrôle lorsque la propriété View est définie sur Details, gérez les événements DrawSubItem
et DrawColumnHeader
.
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 propriété DrawMode
sur OwnerDrawText et gérez l'événement DrawNode
afin de 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 du texte, des icônes, des cases à cocher, des signes plus et moins et des lignes connectant les nœuds.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques de référence suivantes :
Contrôle DataGridView
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 celles-ci, gérez un ou les deux événements RowPrePaint
et RowPostPaint
. L’événement RowPrePaint
se produit avant que les cellules d’une ligne soient peintes, et l’événement RowPostPaint
se produit après la peinture des cellules. Vous pouvez gérer les événements et l’événement CellPainting
pour peindre l’arrière-plan de ligne, les cellules individuelles et le premier plan de ligne séparément, ou vous pouvez fournir des personnalisations spécifiques où vous en avez besoin et utiliser l’affichage par défaut pour d’autres éléments de la ligne.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
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 les contrôles ToolStrip, définissez la propriété Renderer
d'un objet ToolStrip, ToolStripManager, ToolStripPanel ou ToolStripContentPanel sur un objet ToolStripRenderer
et gérez un ou plusieurs des nombreux événements de dessin fournis par la classe ToolStripRenderer
. 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 On
spécifiques.
Pour plus d’informations, notamment des exemples de code, consultez les rubriques suivantes :
Voir aussi
.NET Desktop feedback