Activation de la prise en charge de la conception dans les contrôles personnalisés
Dans le domaine du développement de Windows Forms, les contrôles personnalisés n'ont souvent pas les mêmes capacités de conception que leurs homologues prédéfinis lorsqu'ils sont intégrés en eux. Cela peut être particulièrement frustrant lorsque des fonctionnalités telles que le redimensionnement des colonnes dans une vue de liste personnalisée ne sont pas accessibles en mode conception. Cependant, avec la création d'un concepteur personnalisé, cette limitation peut être surmontée.
Le concepteur par défaut de UserControls, ControlDesigner, ne dispose pas des fonctionnalités nécessaires pour interagir avec les contrôles contenus. Pour remédier à ce problème, nous pouvons créer un concepteur personnalisé qui hérite de ControlDesigner et active spécifiquement la prise en charge de la conception pour le contrôle souhaité dans le contrôle personnalisé.
Pour y parvenir, suivez ces étapes :
Le code ci-dessous illustre cette approche :
using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design; // Note: add reference required: System.Design.dll namespace WindowsFormsApplication1 { [Designer(typeof(MyDesigner))] // Note: custom designer public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } // Note: property added [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ListView Employees { get { return listView1; } } } // Note: custom designer class added class MyDesigner : ControlDesigner { public override void Initialize(IComponent comp) { base.Initialize(comp); var uc = (UserControl1)comp; EnableDesignMode(uc.Employees, "Employees"); } } }
En créant un concepteur personnalisé, nous pouvons étendre les capacités de conception des contrôles personnalisés, activant des fonctionnalités telles que le redimensionnement des colonnes dans les contrôles ListView lorsqu'ils sont intégrés dans Contrôles utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!