Maison > développement back-end > C++ > Comment puis-je activer la prise en charge au moment du design pour les contrôles intégrés dans les contrôles Windows Forms personnalisés ?

Comment puis-je activer la prise en charge au moment du design pour les contrôles intégrés dans les contrôles Windows Forms personnalisés ?

Barbara Streisand
Libérer: 2025-01-05 14:48:41
original
335 Les gens l'ont consulté

How Can I Enable Design-Time Support for Controls Embedded within Custom Windows Forms Controls?

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 :

  1. Ajoutez une propriété publique au contrôle personnalisé qui expose le contrôle sous-jacent, dans ce cas, ListView.
  2. Appliquez l'attribut DesignerSerializationVisibility à la propriété publique pour permettre aux propriétés du contrôle d'être enregistrées lors des modifications de conception.
  3. Appliquez l'attribut Designer à la classe de contrôle personnalisé pour remplacer le concepteur par défaut par le concepteur personnalisé.

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");
        }
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal