Variétés de contrôles personnalisés

.NET Framework vous offre la possibilité de développer et d’implémenter de nouveaux contrôles. Vous pouvez étendre les fonctionnalités du contrôle utilisateur standard et des contrôles existants grâce à l’héritage. Vous pouvez également créer des contrôles personnalisés qui gèrent eux-même leur apparence.

Le choix du type de contrôle à créer peut être délicat. Cette rubrique met en évidence les différences entre les nombreux types de contrôles à partir desquels vous pouvez hériter et vous guide dans le choix du type de contrôle adapté à votre projet.

Remarque

Pour plus d’informations sur la création d’un contrôle pour des Web Forms, consultez l’article Développement de contrôles serveur ASP.NET personnalisés.

Classe de contrôle de base

La Control classe est la classe de base pour les contrôles Windows Forms. Elle fournit l’infrastructure requise pour l’affichage dans les applications Windows Forms.

La Control classe effectue les tâches suivantes pour fournir un affichage visuel dans les applications Windows Forms :

  • 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.

  • Elle fournit la sécurité et la prise en charge des threads dont un contrôle Windows Forms a besoin pour se comporter comme un contrôle Microsoft® ActiveX®.

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

Types de contrôles

Windows Forms prend en charge trois types de contrôles définis par l’utilisateur : composite, étendu et personnalisé. Les sections suivantes décrivent chaque type de contrôle et fournissent des recommandations pour choisir le type de contrôle à utiliser dans vos projets.

Contrôles composites

Un contrôle composite est un ensemble de contrôles Windows Forms encapsulés dans un conteneur commun. Ce type de contrôle est parfois appelé contrôle utilisateur. Les contrôles contenus sont appelés contrôles constitutifs.

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

Un contrôle composite peut par exemple être conçu pour afficher des données d’adresses de clients à partir d’une base de données. Ce contrôle peut inclure 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 pourriez exposer de manière sélective les propriétés de liaison de données, mais aussi empaqueter et réutiliser l’ensemble du contrôle d’une application à l’autre. Pour obtenir un exemple de ce type de contrôle composite, consultez l’article Comment : appliquer des attributs dans les contrôles Windows Forms.

Pour créer un contrôle composite, dérivez de la UserControl classe. La UserControl classe de base fournit le routage du clavier pour les contrôles enfants et permet aux contrôles enfants de fonctionner en tant que groupe. Pour plus d’informations, consultez l’article Développement d’un contrôle Windows Forms composite.

Recommandation

Héritez de la classe UserControl si :

  • vous souhaitez combiner les fonctionnalités de plusieurs contrôles Windows Forms dans une même entité réutilisable.

Contrôles étendus

Vous pouvez dériver un contrôle hérité à partir de n'importe quel contrôle Windows Forms existant. Cette approche vous permet de conserver toutes les fonctionnalités inhérentes d’un contrôle Windows Forms et de les étendre en y ajoutant des propriétés et des méthodes personnalisées 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.

Recommandation

Héritez d'un contrôle Windows Forms si :

  • 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.

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 beaucoup 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, ainsi que tout code spécifique à la fonctionnalité dont vous avez besoin. 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 . Pour plus d’informations, consultez l’article Comment : développer un contrôle Windows Forms simple.

Recommandation

Héritez de la classe Control si :

  • 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 disponible via les contrôles standard.

Contrôles ActiveX

Même si l’infrastructure Windows Forms a été optimisée pour héberger des contrôles Windows Forms, vous pouvez tout de même utiliser des contrôles ActiveX. Cette tâche est prise en charge dans Visual Studio. Pour plus d’informations, consultez l’article Comment : ajouter des contrôles ActiveX aux Windows Forms.

Contrôles sans fenêtre

Les technologies Microsoft Visual Basic® 6.0 et ActiveX prennent en charge les contrôles sans fenêtre. Les contrôles sans fenêtre ne sont pas pris en charge dans les Windows Forms.

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. Pour plus d’informations, consultez les articles Extension de la prise en charge au moment du design et Comment : créer un contrôle Windows Forms qui bénéficie des fonctionnalités au moment du design.

Voir aussi