Compartir a través de


ModelExplorerTreeContainer.AddCommandHandlers (Método)

Proporciona métodos para buscar, invocar y quitar comandos de menú del menú contextual.

Espacio de nombres:  Microsoft.VisualStudio.Modeling.Shell
Ensamblado:  Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0 (en Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0.dll)

Sintaxis

'Declaración
Public Overridable Sub AddCommandHandlers ( _
    menuCommandService As IMenuCommandService _
)
public virtual void AddCommandHandlers(
    IMenuCommandService menuCommandService
)

Parámetros

Comentarios

Este método invoca la interfaz de ISelectionService .

La implementación de la clase base agrega los controladores de comando si no registra un controlador ya. Esto permite que las clases derivadas para reemplazar administrar de cada comando. Por consiguiente, las clases derivadas deben agregar comandos antes de llamar a la clase base.

Ejemplos

Este ejemplo agrega un comando personalizado al menú contextual. Cuando un usuario compila una solución en el diseñador y los clic con el botón secundario en el diagrama, un comando adicional, Comando de ejemplo, aparece en el menú contextual.

En el archivo de Commands.vsct, la línea siguiente aparece después de las instrucciones include.

#define cmdidMyMenuSample  0x0008

En el archivo de Commands.vsct, la línea siguiente aparece después de GENERATED_BUTTONS.

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

Dentro de la carpeta de VsctComponents, el siguiente archivo .cs está disponible. El espacio de nombres y algunos de los métodos tienen el nombre del proyecto, MenuSample, en ellos.

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);
    }
}

Seguridad de .NET Framework

Vea también

Referencia

ModelExplorerTreeContainer Clase

Microsoft.VisualStudio.Modeling.Shell (Espacio de nombres)