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 Onnom_événement appropriées de la nouvelle classe. Vérifiez que vous appelez dans ce cas la ou les méthodes Onnom_é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 :

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 :

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 :

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