Variétés de contrôles personnalisés
Avec .NET Framework, vous pouvez développer et implémenter de nouveaux contrôles. Vous pouvez étendre les fonctionnalités du contrôle utilisateur familier ainsi que les contrôles existants via l’héritage. Vous pouvez également créer des contrôles personnalisés qui gèrent eux-même leur apparence.
Décider du type de contrôle à créer peut prêter à confusion. Cette rubrique met en évidence les différences entre les différents types de contrôles dont vous pouvez hériter et vous fournit des informations sur la façon de choisir un type de contrôle particulier pour votre projet.
Note
Pour plus d’informations sur la création d’un contrôle à utiliser sur Web Forms, consultez Développement de contrôles serveur ASP.NET personnalisés.
Classe de contrôle de base
La classe Control 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.
La classe Control effectue les tâches suivantes pour fournir un affichage visuel dans les applications Windows Forms :
Expose un handle de fenêtre.
Gère le routage des messages.
Fournit des événements de souris et de clavier, ainsi que de nombreux autres événements d’interface utilisateur.
Fournit des fonctionnalités de disposition avancées.
Contient de nombreuses propriétés spécifiques à l’affichage visuel, telles que ForeColor, BackColor, Heightet Width.
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 plupart 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ée . Les sections suivantes décrivent chaque type de contrôle et fournissent des recommandations pour choisir le type à utiliser dans vos projets.
Contrôles composites
Un contrôle composite est une collection 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 de manière sélective leurs propriétés. Un contrôle composite 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 composite peut être créé pour afficher les données d’adresse du client à partir d’une base de données. Ce contrôle peut inclure un contrôle DataGridView pour afficher les champs de base de données, un BindingSource pour gérer la liaison à une source de données et un contrôle BindingNavigator 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 obtenir un exemple de ce type de contrôle composite, consultez How to : Apply Attributes in Windows Forms Controls.
Pour créer un contrôle composite, dérivez de la classe UserControl. La classe de base UserControl 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 Élaboration d’un contrôle composite pour Windows Forms.
Recommendation
Héritez de la classe UserControl si :
- Vous souhaitez combiner les fonctionnalités de plusieurs contrôles Windows Forms dans une unité réutilisable unique.
Contrôles étendus
Vous pouvez dériver un contrôle hérité 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 Button qui suit le 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 méthode OnPaint de la classe de base. Pour un bouton étendu qui effectue le suivi des clics, vous pouvez remplacer la méthode OnPaint pour appeler l’implémentation de base de OnPaint, puis dessiner le nombre de clics dans un angle de la zone cliente du contrôle Button.
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 élément de contrôle consiste à en créer un directement à partir du début en héritant de Control. La classe Control 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é ou interface graphique spécifique au contrôle.
La création d’un contrôle en hériter de la classe Control nécessite beaucoup plus de réflexion et d’effort que d’hériter de UserControl ou d’un contrôle Windows Forms existant. Étant donné qu’une grande quantité d’implémentation est laissée pour vous, votre contrôle peut avoir une plus grande flexibilité qu’un contrôle composite ou étendu, et vous pouvez adapter votre contrôle en fonction de vos besoins exacts.
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 méthode WndProc et gérer directement les messages Windows. Il s’agit du moyen le plus puissant de créer un contrôle, mais pour utiliser cette technique efficacement, vous devez être familiarisé avec l’API Microsoft Win32®.
Un exemple de contrôle personnalisé est un contrôle d’horloge qui duplique l’apparence et le comportement d’une horloge analogique. La peinture personnalisée est invoquée pour que les aiguilles de l’horloge se déplacent en réponse à des événements Tick provenant d’un composant interne à Timer. Pour plus d’informations, consultez Guide pratique pour 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 disponibles via des contrôles standard.
Contrôles ActiveX
Bien que l’infrastructure Windows Forms ait été optimisée pour héberger des contrôles Windows Forms, vous pouvez toujours utiliser des contrôles ActiveX. Il existe une prise en charge de cette tâche dans Visual Studio. Pour plus d'informations, consultez Comment ajouter des contrôles ActiveX à 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 Windows Forms.
Expérience de conception personnalisée
Si vous devez implémenter une expérience personnalisée en temps de conception, vous pouvez créer votre propre designer. Pour les contrôles composites, dérivez votre classe de concepteur personnalisée à partir de la ParentControlDesigner ou des classes DocumentDesigner. Pour les contrôles étendus et personnalisés, dérivez votre classe de concepteur personnalisée de la classe ControlDesigner.
Utilisez le DesignerAttribute pour associer votre contrôle à votre concepteur. Pour plus d’informations, consultez Extension du support Design-Time et Comment : créer un contrôle Windows Forms qui tire parti des fonctionnalités Design-Time.
Voir aussi
- Développement de contrôles Windows Forms personnalisés avec le .NET Framework
- Comment développer un contrôle Windows Forms simple
- Développement d’un contrôle Windows Forms composite
- Extension de la prise en charge au moment du design
- Comment : créer un contrôle Windows Forms qui tire parti des fonctionnalités de Design-Time
.NET Desktop feedback