Maison >développement back-end >C++ >Comment puis-je activer le redimensionnement des colonnes au moment du design dans les contrôles Windows Forms personnalisés ?
Activation de la prise en charge de la conception dans les contrôles personnalisés
Lors de la création de contrôles personnalisés, il est souhaitable de conserver les mêmes fonctionnalités que leurs contrôles de base. L'une de ces fonctionnalités est la possibilité de redimensionner les colonnes en faisant glisser les en-têtes au moment de la conception. Cependant, par défaut, les contrôles personnalisés n'héritent pas de ce comportement.
Le concepteur Windows Forms utilise des classes de concepteur dédiées pour des contrôles spécifiques. Le concepteur d’un ListView, par exemple, est la classe interne System.Windows.Forms.Design.ListViewDesigner. Lorsque vous placez un ListView sur un contrôle utilisateur, le ControlDesigner par défaut est utilisé à la place, ce qui ne permet pas de faire glisser les en-têtes de colonnes.
Pour remédier à cela, vous pouvez créer un concepteur personnalisé pour le contrôle utilisateur. En exposant le ListView sous-jacent via une propriété publique et en appliquant l'attribut [DesignerSerializationVisibility], vous pouvez accéder et modifier les propriétés du ListView au moment de la conception. De plus, en appliquant l'attribut [Designer] à la classe de contrôle utilisateur, vous pouvez remplacer le concepteur par défaut par votre concepteur personnalisé.
Considérez l'exemple suivant :
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"); } } }
Avec ce concepteur personnalisé , le ListView dans le contrôle utilisateur peut être cliqué et conçu comme un ListView autonome.
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!