Partager via


ModelExplorerTreeContainer.AddCommandHandlers, méthode

Fournit des méthodes pour rechercher, appeler, et supprimer des commandes de menu du menu contextuel.

Espace de noms :  Microsoft.VisualStudio.Modeling.Shell
Assembly :  Microsoft.VisualStudio.Modeling.Sdk.Shell.11.0 (dans Microsoft.VisualStudio.Modeling.Sdk.Shell.11.0.dll)

Syntaxe

'Déclaration
Public Overridable Sub AddCommandHandlers ( _
    menuCommandService As IMenuCommandService _
)
public virtual void AddCommandHandlers(
    IMenuCommandService menuCommandService
)

Paramètres

Notes

Cette méthode appelle l'interface d'ISelectionService.

L'implémentation de la classe de base ajoute des gestionnaires de commandes uniquement si un gestionnaire n'est pas déjà enregistré.Cela permet aux classes dérivées pour substituer la gestion de chaque commande.Par conséquent, les classes dérivées doivent ajouter des commandes avant qu'ils appellent la classe de base.

Exemples

Cet exemple ajoute une commande personnalisée au menu contextuel.Lorsqu'un utilisateur génère une solution dans le générateur généré et clique avec le bouton droit le diagramme, une commande supplémentaire, Exemple de commande, s'affiche dans le menu contextuel.

Dans le fichier de Commands.vsct, la ligne suivante apparaît après les instructions de comprendre.

#define cmdidMyMenuSample  0x0008

Dans le fichier de Commands.vsct, la ligne suivante apparaît après GENERATED_BUTTONS.

guidCmdSet:cmdidMyMenuSampe, guidCommonModelingMenu:grpidExplorerMenuGroup, 0x8020, OI_NOID, BUTTON, DIS_DEF, "&Sample Command";

Dans le dossier de VsctComponents, le fichier suivant .cs est disponible. L'espace de noms et certaines des méthodes ont le nom du projet, MenuSample, dans celles-ci.

using DslModeling = global::Microsoft.VisualStudio.Modeling;
using DslShell = global::Microsoft.VisualStudio.Modeling.Shell;
using DslDiagrams = global::Microsoft.VisualStudio.Modeling.Diagrams;
using System;
using System.ComponentModel.Design;
using System.Windows.Forms;

namespace MS.MenuSample
{
    internal partial class MenuSampleExplorer
    {

        public override void AddCommandHandlers(System.ComponentModel.Design.IMenuCommandService menuCommandService)
        {
            menuCommandService.AddCommand(new DslShell::DynamicStatusMenuCommand(
                new EventHandler(OnStatusMyMenuSample),
                new EventHandler(OnMenuMyMenuSample),
                Constants.MyMenuSampleCommand));

            base.AddCommandHandlers(menuCommandService);
        }

        private void OnStatusMyMenuSample(object sender, EventArgs e)
        {
            System.ComponentModel.Design.MenuCommand cmd = sender as System.ComponentModel.Design.MenuCommand;
            cmd.Enabled = cmd.Visible = true;
        }

        private void OnMenuMyMenuSample(object sender, EventArgs e)
        {
            MessageBox.Show("Place for you to act when user chooses this menu item");
        }

    }

    internal static partial class Constants
    {
        private const int cmdidMyMenuSample = 0x0008;
        public static readonly CommandID MyMenuSampleCommand = new CommandID(new Guid(MenuSampleCommandSetId), Constants.cmdidMyMenuSample);
    }
}

Sécurité .NET Framework

Voir aussi

Référence

ModelExplorerTreeContainer Classe

Microsoft.VisualStudio.Modeling.Shell, espace de noms