仅在打开代码窗口时启用Visual Studio扩展的菜单项

时间:2018-10-21 11:13:42

标签: c# visual-studio visual-studio-extensions

我只想在代码编辑器打开时启用扩展菜单项。

我尝试检测何时使用以下代码打开“代码”窗口,但没有成功的结果...

private void MenuItem_BeforeQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand menuCommand = sender as OleMenuCommand;
        if (null != menuCommand)
        {
            IVsMonitorSelection monitorSelection =  this.ServiceProvider.GetService(typeof(IVsMonitorSelection)) as IVsMonitorSelection;
            int pfActive;

            Guid codeWindowGuid = VSConstants.UICONTEXT_CodeWindow;
            uint solutionExistCookie;
            monitorSelection.GetCmdUIContextCookie(ref codeWindowGuid, out solutionExistCookie);
            monitorSelection.IsCmdUIContextActive(solutionExistCookie, out pfActive);

            menuCommand.Enabled = (pfActive == 1);
        }
    }

尽管IsCmdUIContextActive正在重用S_OK,但是即使代码窗口确实打开了,我也总是收到pfActive为false。

我在做什么错了?

3 个答案:

答案 0 :(得分:0)

也许您忘记在out方法签名中的定义位置添加IsCmdUIContextActive关键字了?

答案 1 :(得分:0)

Component Diagnostics扩展名可以显示所有当前活动的上下文,以便您选择所需的上下文:

enter image description here

答案 2 :(得分:0)

检查DTE.ActiveWindow.Document不为空可能是检查活动编辑器的最简单方法。