Partager via


Contrôles personnalisés (Windows Forms .NET)

Avec Windows Forms, vous pouvez créer des contrôles ou modifier des contrôles existants via l’héritage. Cet article met en évidence les différences entre les façons de créer de nouveaux contrôles et vous fournit des informations sur la façon de choisir un type de contrôle particulier pour votre projet.

Classe de contrôle de base

La Control classe est la classe de base pour les contrôles Windows Forms. Il fournit l’infrastructure requise pour l’affichage visuel dans les applications Windows Forms et fournit les fonctionnalités suivantes :

  • Elle expose un handle de fenêtre.
  • Elle gère le routage des messages.
  • Elle fournit des événements de clavier et de souris, ainsi que de nombreux autres événements d’interface utilisateur.
  • Elle fournit des fonctionnalités de disposition avancées.
  • Contient de nombreuses propriétés spécifiques à l’affichage visuel, telles que ForeColor, , BackColorHeight, et Width.

Étant donné que la plupart de l’infrastructure est fournie par la classe de base, il est relativement facile de développer vos propres contrôles Windows Forms.

Créer votre propre contrôle

Il existe trois types de contrôles personnalisés que vous pouvez créer : les contrôles utilisateur, les contrôles étendus et les contrôles personnalisés. Le tableau suivant vous aide à déterminer le type de contrôle que vous devez créer :

Si... Créer un ...
  • vous souhaitez combiner les fonctionnalités de plusieurs contrôles Windows Forms dans une même entité réutilisable.
Concevez un contrôle utilisateur en hériter de System.Windows.Forms.UserControl.
  • la plupart des fonctionnalités dont vous avez besoin sont déjà identiques à un contrôle Windows Forms existant ;
  • Vous n’avez pas besoin d’une interface utilisateur graphique personnalisée ou vous souhaitez concevoir une nouvelle interface utilisateur graphique pour un contrôle existant.
Étendez un contrôle en hériter d’un contrôle Windows Forms spécifique.
  • vous souhaitez fournir une représentation graphique personnalisée de votre contrôle ;
  • Vous devez implémenter des fonctionnalités personnalisées qui ne sont pas disponibles via des contrôles standard.
Créez un contrôle personnalisé en hériter de System.Windows.Forms.Control.

Contrôles utilisateur

Un contrôle utilisateur est une collection de contrôles Windows Forms présentés sous la forme d’un contrôle unique au consommateur. Ce type de contrôle est appelé contrôle composite. Les contrôles contenus sont appelés contrôles constitutifs.

Un contrôle utilisateur contient toutes les fonctionnalités inhérentes associées à chacun des contrôles Windows Forms contenus et vous permet d’exposer et de lier de manière sélective leurs propriétés. Un contrôle utilisateur fournit également une grande quantité de fonctionnalités de gestion du clavier par défaut sans effort de développement supplémentaire de votre part.

Par exemple, un contrôle utilisateur peut être créé pour afficher les données d’adresse du client à partir d’une base de données. Ce contrôle inclut un contrôle permettant d’afficher DataGridView les champs de base de données, de BindingSource gérer la liaison à une source de données et d’un BindingNavigator contrôle pour parcourir les enregistrements. Vous pouvez exposer de manière sélective les propriétés de liaison de données, et vous pouvez empaqueter et réutiliser l’ensemble du contrôle de l’application à l’application.

Pour plus d’informations, consultez vue d’ensemble du contrôle utilisateur.

Contrôles étendus

Vous pouvez dériver un contrôle hérité à partir de n'importe quel contrôle Windows Forms existant. Avec cette approche, vous pouvez conserver toutes les fonctionnalités inhérentes d’un contrôle Windows Forms, puis étendre cette fonctionnalité en ajoutant des propriétés personnalisées, des méthodes ou d’autres fonctionnalités. Avec cette option, vous pouvez remplacer la logique de peinture du contrôle de base, puis étendre son interface utilisateur en modifiant son apparence.

Par exemple, vous pouvez créer un contrôle dérivé du contrôle qui suit le Button nombre de fois où un utilisateur l’a cliqué.

Dans certains contrôles, vous pouvez également ajouter une apparence personnalisée à l’interface utilisateur graphique de votre contrôle en remplaçant la OnPaint méthode de la classe de base. Pour un bouton étendu qui effectue le suivi des clics, vous pouvez remplacer la OnPaint méthode pour appeler l’implémentation de base, puis dessiner le nombre de OnPaintclics dans un angle de la Button zone cliente du contrôle.

Contrôles personnalisés

Une autre façon de créer un contrôle consiste à en créer un sensiblement à partir du début en hériter Control. La Control classe fournit toutes les fonctionnalités de base requises par les contrôles, notamment les événements de gestion de souris et de clavier, mais aucune fonctionnalité spécifique au contrôle ou interface graphique.

La création d’un contrôle en hériter de la Control classe nécessite plus de réflexion et d’effort que d’hériter d’un UserControl contrôle Windows Forms existant. Comme vous gérez une grande partie de l’implémentation, votre contrôle peut avoir une plus grande flexibilité qu’un contrôle composite ou étendu, et vous pouvez personnaliser votre contrôle pour l’adapter à vos besoins spécifiques.

Pour implémenter un contrôle personnalisé, vous devez écrire du code pour l’événement OnPaint du contrôle, qui contrôle la façon dont le contrôle est dessiné visuellement. Vous devez également écrire des comportements spécifiques aux fonctionnalités pour votre contrôle. Vous pouvez également remplacer la WndProc méthode et gérer directement les messages Windows. Il s’agit de la façon la plus efficace pour créer un contrôle, à condition de bien connaître l’API Microsoft Win32®.

Un contrôle personnalisé peut par exemple être un contrôle d’horloge imitant l’apparence et le comportement d’une horloge analogique. La peinture personnalisée est appelée pour que les mains de l’horloge se déplacent en réponse aux Tick événements d’un composant interne Timer .

Expérience de conception personnalisée

Si vous devez implémenter une expérience de conception personnalisée, vous pouvez créer votre propre concepteur. Pour les contrôles composites, dérivez votre classe de concepteur personnalisée à partir des ParentControlDesigner classes ou des DocumentDesigner classes. Pour les contrôles étendus et personnalisés, dérivez votre classe de concepteur personnalisé de la ControlDesigner classe.

Utilisez la commande DesignerAttribute pour associer votre contrôle à votre concepteur.

Les informations suivantes sont obsolètes, mais peuvent vous aider.