Поделиться через


Добавление команды на панель инструментов Обозреватель решений

В этом пошаговом руководстве показано, как добавить кнопку на панель инструментов Обозреватель решений.

Любая команда на панели инструментов или меню вызывается кнопкой в Visual Studio. При нажатии кнопки выполняется код в обработчике команд. Как правило, связанные команды группируются в одну группу. Меню или панели инструментов служат контейнерами для групп. Приоритет определяет порядок, в котором отдельные команды в группе отображаются в меню или на панели инструментов. Вы можете запретить отображение кнопки на панели инструментов или меню, управляя видимостью. Команда, указанная в <VisibilityConstraints> разделе VSCT-файла , отображается только в связанном контексте. Видимость нельзя применить к группам.

Дополнительные сведения о меню, командах панели инструментов и vsct-файлах см. в разделе "Команды", меню и панели инструментов.

Примечание.

Используйте файлы таблицы команд XML (VSCT) вместо файлов конфигурации таблицы команд (CTC), чтобы определить способ отображения меню и команд в VSPackages. Дополнительные сведения см. в командной таблице Visual Studio (. Файлы Vsct).

Создание расширения с помощью команды меню

Создайте проект VSIX с именем SolutionToolbar. Добавьте шаблон элемента команды меню с именем ToolbarButton. Сведения о том, как это сделать, см. в разделе "Создание расширения" с помощью команды меню.

Добавление кнопки на панель инструментов Обозреватель решений

В этом разделе пошагового руководства показано, как добавить кнопку на панель инструментов Обозреватель решений. При нажатии кнопки выполняется код в методе обратного вызова.

  1. В файле ToolbarButtonPackage.vsct перейдите в <Symbols> раздел. Узел <GuidSymbol> содержит группу меню и команду, созданную шаблоном пакета. <IDSymbol> Добавьте элемент на этот узел, чтобы объявить группу, в которой будет храниться ваша команда.

    <IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
    
  2. <Groups> В разделе после существующей записи группы определите новую группу, объявленную на предыдущем шаге.

    <Group guid="guidToolbarButtonPackageCmdSet"
           id="SolutionToolbarGroup" priority="0xF000">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
          </Group>
    

    Задание родительской пары guidSHLMainMenu GUID:ID и IDM_VS_TOOL_PROJWIN помещает эту группу на панель инструментов Обозреватель решений и задает значение с высоким приоритетом после других групп команд.

  3. <Buttons> В разделе измените родительский идентификатор созданной <Button> записи, чтобы отразить группу, определенную на предыдущем шаге. Измененный <Button> элемент должен выглядеть следующим образом:

    <Button guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" priority="0x0100" type="Button">
        <Parent guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" />
        <Icon guid="guidImages" id="bmpPicStrikethrough" />
        <Strings>
            <ButtonText>Invoke ToolbarButton</ButtonText>
        </Strings>
    </Button>
    
  4. Выполните сборку решения и запустите отладку. Откроется экспериментальный экземпляр.

    Панель инструментов Обозреватель решений должна отображать новую кнопку команды справа от существующих кнопок. Значок кнопки — это зачеркнутый.

  5. Нажмите кнопку "Создать".

    Откроется диалоговое окно с сообщением ToolbarButtonPackage Inside SolutionToolbar.ToolbarButton.MenuItemCallback().

Управление видимостью кнопки

В этом разделе пошагового руководства показано, как управлять видимостью кнопки на панели инструментов. Установив контекст для одного или нескольких проектов в <VisibilityConstraints> разделе файла SolutionToolbar.vsct , кнопка будет отображаться только при открытии проекта или проектов.

Отображение кнопки при открытии одного или нескольких проектов

  1. <Buttons> В разделе ToolbarButtonPackage.vsct добавьте два флага команд в существующий <Button> элемент между <Strings> тегами и <Icons> тегами.

    <CommandFlag>DefaultInvisible</CommandFlag>
    <CommandFlag>DynamicVisibility</CommandFlag>
    

    Необходимо DefaultInvisible задать и DynamicVisibility флаги, чтобы записи в <VisibilityConstraints> разделе могли ввести в силу.

  2. <VisibilityConstraints> Создайте раздел с двумя <VisibilityItem> записями. Поместите новый раздел сразу после закрывающего </Commands> тега.

    <VisibilityConstraints>
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasSingleProject" />
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasMultipleProjects" />
    </VisibilityConstraints>
    

    Каждый элемент видимости представляет условие, в котором отображается указанная кнопка. Чтобы применить несколько условий, необходимо создать несколько записей для одной кнопки.

  3. Выполните сборку решения и запустите отладку. Откроется экспериментальный экземпляр.

    Панель инструментов Обозреватель решений не содержит кнопку нападающего.

  4. Откройте любое решение, содержащее проект.

    Кнопка начерка отображается на панели инструментов справа от существующих кнопок.

  5. В меню Файл выберите пункт Закрыть решение. Кнопка исчезает с панели инструментов.

    Видимость кнопки управляется Visual Studio до загрузки VSPackage. После загрузки VSPackage видимость кнопки управляется VSPackage. Дополнительные сведения см. в разделе MenuCommands и OleMenuCommands.