Включить пункт меню моего расширения Visual Studio только при открытом окне кода - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы включить свой пункт меню расширения только при открытом редакторе кода.

Я пытаюсь определить, когда открывается окно кода со следующим кодом без успешного результата ...

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 голосов
/ 22 октября 2018

Проверка DTE.ActiveWindow.Document не равна нулю, вероятно, самый простой способ проверить наличие активного редактора.

0 голосов
/ 21 октября 2018

Может быть, вы забыли добавить ключевое слово out в подпись метода IsCmdUIContextActive в том месте, где оно определено?

...