如何在Visual Studio 2017 VSIX C#项目中启用/禁用命令

时间:2018-06-22 13:36:41

标签: c# visual-studio command vsix vsct

我正在使用C#VSIX项目开发Visual Studio 2017的扩展。 我需要基于.ini文件中的设置来创建可变数量的命令。 我认为要创建最大数量的命令(因为在VSIX项目中,每个命令都需要一个新的.cs文件), 并仅启用.ini文件中编写的命令。不幸的是,我不知道如何禁用命令。当布尔值变为true时,我需要启用命令。

我已经看到我需要使用OleMenuCommand类,但是我没有Initialize()和StatusQuery()方法。如何动态启用命令?

2 个答案:

答案 0 :(得分:1)

要在Visual Studio中启用/禁用命令,您可以订阅BeforeQueryStatus的{​​{1}}事件:

OleMenuCommand

myOleMenuCommand.BeforeQueryStatus += QueryCommandHandler; private void QueryCommandHandler(object sender) { var menuCommand = sender as Microsoft.VisualStudio.Shell.OleMenuCommand; if (menuCommand != null) menuCommand.Visible = menuCommand.Enabled = MyCommandStatus(); } 方法的可能实现可以是:

MyCommandStatus()

答案 1 :(得分:0)

当创建要与OleMenuCommandService添加的OleMenuCommand时,您可以订阅BeforeQueryStatus事件,并在其中动态启用/禁用该命令:

    private void OnQueryStatus(object sender)
    {
            Microsoft.VisualStudio.Shell.OleMenuCommand menuCommand =
                sender as Microsoft.VisualStudio.Shell.OleMenuCommand;
            if (menuCommand != null)
                menuCommand.Visible = menuCommand.Enabled = MyCommandStatus();
    }