Commandes du concepteur et modèle objet DesignerAction pour les Windows Forms

Les commandes du concepteur et le modèle objet DesignerAction fournissent une méthode généralisée afin de spécifier un ensemble d'actions pour un composant au moment du design. Les utilisateurs accèdent ensuite à ces actions depuis l'aire de conception, généralement en cliquant sur le glyphe de balises actives (Glyphe de balise active) d'un composant et en sélectionnant l'une des actions proposées dans le panneau des balises actives. Ce modèle réunit les diverses façons dont un concepteur peut proposer des commandes aux utilisateurs.

Balises actives

La fonctionnalité des balises actives permet aux composants et aux contrôles d'afficher des informations contextuelles et des commandes pour les utilisateurs. La balise active peut être considérée comme un remplacement pour les verbes de concepteur, car vous pouvez choisir d'afficher un élément de balise active dans le panneau des balises actives ainsi que dans le menu contextuel associé à un composant ou contrôle.

Pour obtenir un exemple complet de l'implémentation des balises actives, consultez Comment : attacher des balises actives à un composant Windows Forms.

Classes de commandes du concepteur

Le tableau suivant décrit l'exposition des commandes du concepteur lorsque vous développez des composants et des contrôles.

Classe

Description

MenuCommand

Un délégué attaché à un ID de commande. Il ne définit pas le texte de la commande, son positionnement ou d'autres métadonnées.

DesignerVerb

Commande de menu qui définit également son texte et d'autres métadonnées. Les verbes sont généralement fournis par concepteur et sont spécifiques au concepteur. En général, les verbes du concepteur apparaissent dans un menu contextuel ou dans le menu Affichage de la barre de menus principale.

DesignerActionItem

Commande de menu qui définit le texte et d'autres métadonnées pour décrire une action ciblée pouvant être exécutée. L'utilisateur est amené à effectuer des actions impliquant des processus à plusieurs étapes, tels que la configuration d'une source de données pour un composant.

Modèle push et modèle d'extraction

Le tableau suivant présente les deux modèles permettant d'accéder par programme aux commandes du concepteur.

Modèle

Description

Push

Un concepteur demande spécifiquement un service et ajoute des commandes à ce service.

Pull (Extraction)

Un concepteur est interrogé par un service au sujet des commandes qu'il propose.

Unification des commandes existantes

Les types de commandes répertoriés dans le tableau précédent des classes de commandes du concepteur ont beaucoup de points communs. L'API DesignerAction les réunit afin de présenter un modèle uniforme d'exposition des commandes aux utilisateurs d'un concepteur.

Notes

Certains concepteurs ne prennent pas en charge tous les modèles.Un concepteur peut demander les types de prise en charge proposés et, comme réponse, il peut modifier la façon dont il propose des commandes.De plus, il se peut que le modèle push et le modèle d'extraction ne soient pas pris en charge pour tous les types de commandes.Certains concepteurs n'exposeront pas les actions du concepteur sous forme de balises actives.Par exemple, certains concepteurs peuvent exposer les actions du concepteur dans une fenêtre Outil.

Modèle objet DesignerAction

Le tableau suivant décrit les classes importantes qui implémentent le modèle objet DesignerAction.

Classe

Description

DesignerActionItem

Représente un élément de panneau sur un panneau des balises actives.

DesignerActionList

Définit une liste d'éléments utilisés pour créer un panneau des balises actives.

DesignerActionService

Établit un service au moment du design qui gère la collection d'objets DesignerActionItem pour les composants.

DesignerActionTextItem

Représente un élément de texte statique sur un panneau. Dérive de DesignerActionItem.

DesignerActionPropertyItem

Représente un élément de panneau associé à une propriété dans une classe dérivée de DesignerActionList. Dérive de DesignerActionItem.

DesignerActionMethodItem

Représente un élément de panneau associé à une méthode dans une classe dérivée de DesignerActionList. Dérive de DesignerActionItem.

DesignerActionHeaderItem

Représente un élément d'en-tête statique sur un panneau des balises actives. Dérive de DesignerActionTextItem.

Utilisation du modèle objet DesignerAction

Pour activer les actions du concepteur pour votre composant ou contrôle, dérivez de la classe de base DesignerActionList. Utilisez cette classe dérivée pour remplir un panneau des balises actives qui représente l'interface utilisateur de type menu.

Votre classe dérivée peut substituer la méthode virtual GetSortedActionItems pour retourner une collection d'objets dérivés de DesignerActionItem. Ces objets représentent les éléments du panneau. Chaque élément est affiché dans le panneau en fonction de son type. Par exemple, un DesignerActionTextItem est affiché en tant qu'étiquette de texte statique. Les éléments du panneau actifs, représentés par les types DesignerActionPropertyItem et DesignerActionMethodItem, possèdent respectivement une propriété ou une méthode correspondante accessible publiquement qui implémente les fonctionnalités pour cet élément.

Une fois que votre classe dérivée est créée, vous pouvez l'ajouter à un contrôle de deux façons :

  • Avec le modèle d'extraction, vous ajoutez une instance de votre classe dérivée à la propriété ActionLists sur la classe ComponentDesigner. Cela permet aux classes qui héritent de fournir d'autres listes d'actions et à leurs éléments d'être fusionnés.

  • Avec le modèle push, vous appelez Add pour ajouter une instance de votre classe dérivée à la collection gérée par le DesignerActionService global. Ces listes d'actions seront fusionnées avec celles de la collection gérée par ComponentDesigner.

Un DesignerActionPropertyItem est représenté dans le concepteur par son UITypeEditor correspondant. Un DesignerActionMethodItem est représenté dans le concepteur par un élément d'interface actif, tel qu'un lien hypertexte, qui appelle une méthode fournie par un programmeur. L'implémentation de votre liste d'actions de la méthode GetSortedActionItems retourne les propriétés et les méthodes dans l'ordre dans lequel elles doivent s'afficher dans le panneau des balises actives.

Pour obtenir un exemple complet de l'implémentation de balises actives, consultez la rubrique Comment : attacher des balises actives à un composant Windows Forms.

Verbes existants dans les listes d'actions

Les contrôles et les composants avec des implémentations DesignerVerb existantes reçoivent automatiquement la prise en charge DesignerActionList. L'environnement de design interroge le concepteur d'un composant pour une liste d'actions, et si aucune n'est disponible, une liste est créée pour les verbes existants.

Éléments de la liste d'actions dans le menu contextuel

Si vous souhaitez qu'un élément apparaisse à la fois dans le menu contextuel et dans une liste d'actions, vous pouvez spécifier l'indicateur IncludeAsDesignerVerb sur DesignerActionMethodItem.

Lorsque Add est appelé, un DesignerActionMethodItem avec l'indicateur IncludeAsDesignerVerb défini est recherché dans la liste d'actions. S'il est défini, la méthode AddVerb sera appelée pour que cet élément l'ajoute aux verbes du composant et donc à son menu contextuel.

Modifications apportées aux types de commandes du concepteur

Les classes MenuCommand et DesignerVerb de la version 1.1 du .NET Framework ont été légèrement modifiées afin de prendre en charge le modèle objet DesignerAction. Les deux types exposent maintenant une nouvelle propriété appelée Properties, qui est un IDictionary stockant toutes les propriétés publiques pour l'objet de commande. La clé du dictionnaire correspond au nom de la propriété publique. Ainsi, l'énumération générique des propriétés est activée et une base cohérente à partir de laquelle de nouvelles propriétés peuvent être ajoutées sans modifier la définition de classe est fournie.

De plus, la classe MenuCommandService fournit une implémentation standard du IMenuCommandService et exécute l'intégration de verbe correcte. Cette classe déclenche des événements qui notifient les ajouts et les retraits effectués dans les commandes. Avec cette classe, vous pouvez créer une interface utilisateur basée sur les résultats de ces événements. MenuCommandService ainsi que IMenuCommandService sont disponibles dans le conteneur de service.

Voir aussi

Tâches

Comment : attacher des balises actives à un composant Windows Forms

Référence

DesignerActionList

ComponentDesigner

DesignerVerb

MenuCommand

MenuCommandService

Autres ressources

Extension de la prise en charge au moment du design