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.
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 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 et fournit les fonctionnalités suivantes :
- 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.
É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 ... |
---|---|
|
Concevez un contrôle utilisateur en hériter de System.Windows.Forms.UserControl. |
|
Étendez un contrôle en hériter d’un contrôle Windows Forms spécifique. |
|
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 inclurait un DataGridView pour afficher les champs de la base de données, un BindingSource pour gérer la liaison à une source de données, et un 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 utilisateur, consultez Comment : appliquer des attributs dans les contrôles Windows Forms.
Pour plus d’informations, consultez vue d’ensemble du contrôle utilisateur.
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.
Pour obtenir un exemple d’extension d’un contrôle, consultez Étendre 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éritant de la classe Control nécessite plus de réflexion et d’effort que l'héritage 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 la OnPaint méthode 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 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 Créer un contrôle personnalisé simple.
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.
Avertissement
Les contrôles ActiveX ne sont pas entièrement pris en charge sur .NET. Les contrôles ActiveX restent entièrement pris en charge sur .NET Framework.
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.
Les informations suivantes sont obsolètes, mais elles peuvent vous aider.
.NET Desktop feedback