Добавление команды на панель инструментов Обозреватель решений
В этом пошаговом руководстве показано, как добавить кнопку на панель инструментов Обозреватель решений.
Любая команда на панели инструментов или меню вызывается кнопкой в Visual Studio. При нажатии кнопки выполняется код в обработчике команд. Как правило, связанные команды группируются в одну группу. Меню или панели инструментов служат контейнерами для групп. Приоритет определяет порядок, в котором отдельные команды в группе отображаются в меню или на панели инструментов. Вы можете запретить отображение кнопки на панели инструментов или меню, управляя видимостью. Команда, указанная в <VisibilityConstraints>
разделе VSCT-файла , отображается только в связанном контексте. Видимость нельзя применить к группам.
Дополнительные сведения о меню, командах панели инструментов и vsct-файлах см. в разделе "Команды", меню и панели инструментов.
Примечание.
Используйте файлы таблицы команд XML (VSCT) вместо файлов конфигурации таблицы команд (CTC), чтобы определить способ отображения меню и команд в VSPackages. Дополнительные сведения см. в командной таблице Visual Studio (. Файлы Vsct).
Создание расширения с помощью команды меню
Создайте проект VSIX с именем SolutionToolbar
. Добавьте шаблон элемента команды меню с именем ToolbarButton. Сведения о том, как это сделать, см. в разделе "Создание расширения" с помощью команды меню.
Добавление кнопки на панель инструментов Обозреватель решений
В этом разделе пошагового руководства показано, как добавить кнопку на панель инструментов Обозреватель решений. При нажатии кнопки выполняется код в методе обратного вызова.
В файле ToolbarButtonPackage.vsct перейдите в
<Symbols>
раздел. Узел<GuidSymbol>
содержит группу меню и команду, созданную шаблоном пакета.<IDSymbol>
Добавьте элемент на этот узел, чтобы объявить группу, в которой будет храниться ваша команда.<IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
<Groups>
В разделе после существующей записи группы определите новую группу, объявленную на предыдущем шаге.<Group guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" priority="0xF000"> <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/> </Group>
Задание родительской пары
guidSHLMainMenu
GUID:ID иIDM_VS_TOOL_PROJWIN
помещает эту группу на панель инструментов Обозреватель решений и задает значение с высоким приоритетом после других групп команд.<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>
Выполните сборку решения и запустите отладку. Откроется экспериментальный экземпляр.
Панель инструментов Обозреватель решений должна отображать новую кнопку команды справа от существующих кнопок. Значок кнопки — это зачеркнутый.
Нажмите кнопку "Создать".
Откроется диалоговое окно с сообщением ToolbarButtonPackage Inside SolutionToolbar.ToolbarButton.MenuItemCallback().
Управление видимостью кнопки
В этом разделе пошагового руководства показано, как управлять видимостью кнопки на панели инструментов. Установив контекст для одного или нескольких проектов в <VisibilityConstraints>
разделе файла SolutionToolbar.vsct , кнопка будет отображаться только при открытии проекта или проектов.
Отображение кнопки при открытии одного или нескольких проектов
<Buttons>
В разделе ToolbarButtonPackage.vsct добавьте два флага команд в существующий<Button>
элемент между<Strings>
тегами и<Icons>
тегами.<CommandFlag>DefaultInvisible</CommandFlag> <CommandFlag>DynamicVisibility</CommandFlag>
Необходимо
DefaultInvisible
задать иDynamicVisibility
флаги, чтобы записи в<VisibilityConstraints>
разделе могли ввести в силу.<VisibilityConstraints>
Создайте раздел с двумя<VisibilityItem>
записями. Поместите новый раздел сразу после закрывающего</Commands>
тега.<VisibilityConstraints> <VisibilityItem guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" context="UICONTEXT_SolutionHasSingleProject" /> <VisibilityItem guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" context="UICONTEXT_SolutionHasMultipleProjects" /> </VisibilityConstraints>
Каждый элемент видимости представляет условие, в котором отображается указанная кнопка. Чтобы применить несколько условий, необходимо создать несколько записей для одной кнопки.
Выполните сборку решения и запустите отладку. Откроется экспериментальный экземпляр.
Панель инструментов Обозреватель решений не содержит кнопку нападающего.
Откройте любое решение, содержащее проект.
Кнопка начерка отображается на панели инструментов справа от существующих кнопок.
В меню Файл выберите пункт Закрыть решение. Кнопка исчезает с панели инструментов.
Видимость кнопки управляется Visual Studio до загрузки VSPackage. После загрузки VSPackage видимость кнопки управляется VSPackage. Дополнительные сведения см. в разделе MenuCommands и OleMenuCommands.