Utiliser Visual C# pour faire en sorte qu’un objet UserControl agisse comme un conteneur de contrôle au moment de la conception
Cet article fournit des informations sur la façon de faire en sorte qu’un objet UserControl agisse en tant que conteneur de contrôle au moment de la conception après avoir ajouté l’objet UserControl à un Windows Form.
Version d’origine du produit : Visual C#
Numéro de la base de connaissances d’origine : 813450
Résumé
Cet article fait référence à l’espace de noms System.ComponentModel
bibliothèque de classes Microsoft .NET Framework .
Cet article pas à pas explique comment faire en sorte qu’un objet UserControl agisse en tant que conteneur de contrôle au moment du design après avoir placé UserControl sur un Windows Form. Il peut arriver que vous souhaitiez faire glisser un contrôle vers votre UserControl. Pour ce faire, le UserControl doit agir comme un conteneur de contrôle.
Par défaut, un objet UserControl peut agir comme conteneur de contrôle uniquement lorsque vous créez le contrôle. Pour que l’hôte UserControl soit un contrôle constitutif après avoir placé usercontrol sur un Windows Form, vous devez modifier le concepteur par défaut de UserControl. Pour implémenter des services au moment du design pour un composant, utilisez la DesignerAttribute
classe de l’espace System.ComponentModel
de noms . vient DesignerAttribute
avant la déclaration de classe. Initialisez en DesignerAttribute
transmettant les designerTypeName
paramètres et designerBaseType
.
designerTypeName
est le nom complet du type de concepteur qui fournit des services au moment du design. Passez la combinaison de System.Windows.Forms.Design.ParentControlDesigner
et de pour System.Design
le designerTypeName
paramètre . La ParentControlDesigner
classe étend le comportement au moment du design pour un UserControl.
designerBaseType
est le nom de la classe de base pour le concepteur. La classe utilisée pour les services au moment du design doit implémenter l’interface IDesigner.
Créer userControl en tant que conteneur de contrôle au moment du design
Créez un projet de bibliothèque de contrôles Windows Visual C#. Pour cela, procédez comme suit :
- Démarrez Visual Studio.
- On the File menu, point to New, and then click Project.
- Sous Types de projets, cliquez sur Visual C#, puis sur Windows Forms Bibliothèque de contrôles sous Modèles.
Nommez le projet ContainerUserControl. Par défaut, UserControl1.cs est créé.
Dans Explorateur de solutions, cliquez avec le bouton droit sur UserControl1.cs, puis cliquez sur Afficher le code.
Ajoutez le code suivant à la section déclarations :
using System.ComponentModel.Design;
Appliquez l’attribut
System.ComponentModel.DesignerAttribute
au contrôle comme suit :[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public class UserControl1 : System.Windows.Forms.UserControl { ... }
Dans le menu Générer, cliquez sur Générer la solution.
Tester usercontrol
Créez un projet Visual C#. Pour cela, procédez comme suit :
- Démarrez Visual Studio.
- On the File menu, point to New, and then click Project.
- Sous Types de projets, cliquez sur Visual C#, puis sur Windows Forms Application sous Modèles. Par défaut, Form1.cs est créé.
Ajoutez le contrôle UserControl1 à la boîte à outils.
- Dans le menu Outils , cliquez sur Choisir les éléments de boîte à outils.
- Sous l’onglet Composants .NET Framework , cliquez sur Parcourir.
- Dans la zone Ouvrir un fichier , recherchez la DLL qui a été générée lorsque vous avez créé le contrôle UserControl.
Faites glisser UserControl1 de la boîte à outils (sous Windows Forms) vers Form1.cs.
Faites glisser un contrôle Button de la boîte à outils vers UserControl1.
Remarque
UserControl1 se comporte comme un conteneur de contrôle pour le contrôle Button.
References
Pour plus d’informations, consultez le site web Microsoft : ParentControlDesigner, classe.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour