共用方式為


ModelExplorerTreeContainer.AddCommandHandlers 方法

提供方法來尋找、 叫用時,並從快顯功能表中移除功能表命令。

命名空間:  Microsoft.VisualStudio.Modeling.Shell
組件:  Microsoft.VisualStudio.Modeling.Sdk.Shell.11.0 (在 Microsoft.VisualStudio.Modeling.Sdk.Shell.11.0.dll 中)

語法

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

參數

備註

這個方法會叫用ISelectionService介面。

未登錄處理常式時,才基底類別實作會將命令處理常式。 這可讓衍生的類別覆寫每個命令的處理。 因此,衍生的類別應該新增命令,它們是在呼叫基底類別。

範例

本範例在快顯功能表中新增自訂命令。 當使用者建置的方案中產生的設計工具,並以滑鼠右鍵按一下圖表,也就是一個額外的命令, 的範例命令,會出現在快顯功能表。

在 Commands.vsct 檔案中下, 面這一行會出現在包含陳述式之後。

#define cmdidMyMenuSample  0x0008

在 Commands.vsct 檔案中,在 GENERATED_BUTTONS 之後會出現下面這一行。

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

在 [VsctComponents] 資料夾中,下列的.cs 檔使用。命名空間和幾種方法具有專案名稱,MenuSample,在其中。

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 安全性

請參閱

參考

ModelExplorerTreeContainer 類別

Microsoft.VisualStudio.Modeling.Shell 命名空間