Freigeben über


ModelExplorerTreeContainer.AddCommandHandlers-Methode

Stellt Methoden bereit, um Menübefehle aus dem Kontextmenü zu suchen, aufzurufen und zu entfernen.

Namespace:  Microsoft.VisualStudio.Modeling.Shell
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0.dll)

Syntax

'Declaration
Public Overridable Sub AddCommandHandlers ( _
    menuCommandService As IMenuCommandService _
)
public virtual void AddCommandHandlers(
    IMenuCommandService menuCommandService
)

Parameter

Hinweise

Diese Methode ruft die ISelectionService-Schnittstelle auf.

Basisklassenimplementierung fügt Befehlshandler hinzu, wenn ein Handler nicht bereits registriert ist. Dies ermöglicht es, dass abgeleitete Klassen die Behandlung jeden Befehl zu überschreiben. Daher sollten abgeleitete Klassen Befehle hinzufügen, bevor die Basisklasse aufrufen.

Beispiele

In diesem Beispiel wird ein benutzerdefinierter Befehl dem Kontextmenü hinzu. Wenn ein Benutzer eine Projektmappe im generierten Designer erstellt und mit der rechten Maustaste auf das Diagramm klickt, wird ein Befehl, zusätzliche Beispielbefehl, im Kontextmenü.

In der Datei Commands.vsct wird die folgende Zeile nach den include-Anweisungen angezeigt.

#define cmdidMyMenuSample  0x0008

In der Datei Commands.vsct wird die folgende Zeile nach GENERATED_BUTTONS angezeigt.

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

Innerhalb des VsctComponents-Ordners ist die folgende CS-Datei verfügbar. Der Namespace und einige der Methoden haben den Namen des Projekts, MenuSample, in ihnen.

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

.NET Framework-Sicherheit

Siehe auch

Referenz

ModelExplorerTreeContainer Klasse

Microsoft.VisualStudio.Modeling.Shell-Namespace