Пошаговое руководство: Добавление контроллера меню на панели инструментов
Для построения этого пошагового руководства Добавление панели инструментов окна инструментов пошаговое руководство показывает, как добавить и контроллер меню на панели инструментов окна инструментов. Шаги, приведенные здесь также можно применять в панели инструментов, которая создается в этом пошаговом руководстве Добавление панели инструментов в интегрированной среде разработки.
Контроллер меню управление разбиения. Левая сторона контроллера меню отображает последн-используемую команду и может быть запущена, щелкните ее. Правая часть контроллера меню, щелчок стрелку, которая позволяет открыть список дополнительных команд. При выборе команды в списке, команда выполняется, и она заменяет команда слева контроллера меню. Таким образом, контроллеры меню работает как кнопка, которая всегда показывает последн-используемую команду из списка.
Контроллеры меню могут появиться в меню, но наиболее часто используются на панелях инструментов.
Данное пошаговое руководство демонстрирует контроллер меню, который обеспечивает 3 дискретных параметров, определенных в файле .vsct. Дополнительные сведения о меню и файлах .vsct см. в разделе Команды, меню, панели инструментов.
Обязательные компоненты
Чтобы выполнить это пошаговое руководство, необходимо устанавливать SDK для Visual Studio 2010.
Примечание
Дополнительные сведения о пакете SDK для Visual Studio см. в разделе интеграция SDK Visual Studio.Чтобы узнать, как загрузить пакет SDK для Visual Studio см. в разделе Центр разработчиков расширяемости Visual Studio на веб-сайте MSDN.
Создать контроллер меню
Создать контроллер меню
Следуйте процедурами, описанным в разделе how Пошаговое руководство: Добавление панели инструментов в окно инструментов создание окно инструментов VSPackage, которое содержит панель инструментов.
IN Обозреватель решенийдважды щелкните TWToolbar.vsct, чтобы открыть его в текстовом редакторе.
в Символы в раздел " GuidSymbol "guidTWToolbarCmdSet" именованное элементом, объявляющий контроллер меню группа контроллера меню и 3 пункта меню.
<IDSymbol name="TestMenuController" value="0x1300" /> <IDSymbol name="TestMenuControllerGroup" value="0x1060" /> <IDSymbol name="cmdidMCItem1" value="0x0130" /> <IDSymbol name="cmdidMCItem2" value="0x0131" /> <IDSymbol name="cmdidMCItem3" value="0x0132" />
в Меню раздел после последней записи меню задает контроллер меню в меню.
<Menu guid="guidTWToolbarCmdSet" id="TestMenuController" priority="0x0100" type="MenuController"> <Parent guid="guidTWToolbarCmdSet" id="TWToolbarGroup" /> <CommandFlag>IconAndText</CommandFlag> <CommandFlag>TextChanges</CommandFlag> <CommandFlag>TextIsAnchorCommand</CommandFlag> <Strings> <ButtonText>Test Menu Controller</ButtonText> <CommandName>Test Menu Controller</CommandName> </Strings> </Menu>
TextChanges и TextIsAnchorCommand флаги необходимо включить, чтобы разрешить в контроллере меню, чтобы отразить последней выбранной команды.
в Группы раздел после последней записи группы, добавляет группу контроллера меню.
<Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000"> <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" /> </Group>
Устанавливая контроллер меню, что и родительский все команды, помещенные в этой группе будут отображаться в контроллер меню. priority атрибут опущен, в котором задается значение по умолчанию 0поскольку является единственной группой на контроллере меню.
в Кнопки раздел после последней записи кнопки добавить a кнопка элемент для каждого из пунктов меню.
<Button guid="guidTWToolbarCmdSet" id="cmdidMCItem1" priority="0x0000" type="Button"> <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" /> <Icon guid="guidImages" id="bmpPic1" /> <CommandFlag>IconAndText</CommandFlag> <Strings> <ButtonText>MC Item 1</ButtonText> <CommandName>MC Item 1</CommandName> </Strings> </Button> <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem2" priority="0x0100" type="Button"> <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" /> <Icon guid="guidImages" id="bmpPic2" /> <CommandFlag>IconAndText</CommandFlag> <Strings> <ButtonText>MC Item 2</ButtonText> <CommandName>MC Item 2</CommandName> </Strings> </Button> <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem3" priority="0x0200" type="Button"> <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" /> <Icon guid="guidImages" id="bmpPicSearch" /> <CommandFlag>IconAndText</CommandFlag> <Strings> <ButtonText>MC Item 3</ButtonText> <CommandName>MC Item 3</CommandName> </Strings> </Button>
На этом этапе можно найти контроллер меню.
Нажмите клавишу F5открыть экземпляр экспериментальном Visual Studio.
На Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку окно инструментов теста.
Контроллер меню отображается в панели инструментов в окне инструментов.
Нажмите стрелку справа от контроллера меню, чтобы увидеть 3 возможных команды.
Обратите внимание, что при выборе команды левая часть контроллера для отображения меню изменяется этой команды. В следующем разделе мы добавим код, чтобы активировать эти команды.
Закройте экспериментальном Visual Studio.
Реализация команды контроллера меню
Реализация команды контроллера меню в управляемом коде
IN Обозреватель решенийдважды щелкните PkgCmdID.cs, чтобы открыть его в текстовом редакторе.
После существующих идентификаторы команд в классе PkgCmdIDList добавьте идентификаторы команд для 3 пунктов меню.
public const int cmdidMCItem1 = 0x130; public const int cmdidMCItem2 = 0x131; public const int cmdidMCItem3 = 0x132;
IN Обозреватель решенийвыберите команду открыть TWToolbarPackage.cs.
В верхней части класса TWToolbarPackage добавьте следующие строки:
private int currentMCCommand; // The currently selected menu controller command
Найдите скрытая с надписью область "элементами пакета" и развернуть ее, нажав кнопку ввести положительного значения левое поле.
в Initialize метод сразу после последнего вызова AddCommand метод добавляет код для направления события для каждой команды через одинаковые обработчики.
for (int i = PkgCmdIDList.cmdidMCItem1; i <= PkgCmdIDList.cmdidMCItem3; i++) { CommandID cmdID = new CommandID(GuidList.guidTWToolbarCmdSet, i); OleMenuCommand mc = new OleMenuCommand(new EventHandler(OnMCItemClicked), cmdID); mc.BeforeQueryStatus += new EventHandler(OnMCItemQueryStatus); mcs.AddCommand(mc); // The first item is, by default, checked. if (PkgCmdIDList.cmdidMCItem1 == i) { mc.Checked = true; this.currentMCCommand = i; } }
в конце TWToolbarPackage класс сразу после MenuItemCallback метод добавляет метод для пометки выбранной команды, как проверяется.
private void OnMCItemQueryStatus(object sender, EventArgs e) { OleMenuCommand mc = sender as OleMenuCommand; if (null != mc) { mc.Checked = (mc.CommandID.ID == this.currentMCCommand); } }
После OnMCItemQueryStatus метод добавляет обработчик событий, когда пользователь выбирает команду на контроллере меню:
private void OnMCItemClicked(object sender, EventArgs e) { OleMenuCommand mc = sender as OleMenuCommand; if (null != mc) { string selection; switch (mc.CommandID.ID) { case PkgCmdIDList.cmdidMCItem1: selection = "Menu controller Item 1"; break; case PkgCmdIDList.cmdidMCItem2: selection = "Menu controller Item 2"; break; case PkgCmdIDList.cmdidMCItem3: selection = "Menu controller Item 3"; break; default: selection = "Unknown command"; break; } this.currentMCCommand = mc.CommandID.ID; IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); Guid clsid = Guid.Empty; int result; uiShell.ShowMessageBox( 0, ref clsid, "Test Tool Window Toolbar Package", string.Format(CultureInfo.CurrentCulture, "You selected {0}", selection), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result); } }
Выполните построение решения и исправьте все ошибки, которые происходят.
Тестирование контроллер меню
Тестирование контроллер меню
Нажмите клавишу F5, чтобы открыть экземпляр экспериментальном Visual Studio.
Открытие окно инструментов теста.
Контроллер меню появляется на панели инструментов в окне инструментов и 1 " MC "отображаются.
Нажмите кнопку со стрелкой контроллера меню налево.
Откроется диалоговое окно, в котором отображается элемент 1 " контроллера меню сообщение "выбранный. Обратите внимание, что сообщение соответствует текста на кнопке контроллера меню.
Щелкните стрелку на контроллере меню для отображения 3 элементов первого из которых выбирает и имеет окно выделения вокруг его значка. Нажать элемент 3 MC.
Откроется диалоговое окно, в котором отображается элемент 3 " контроллера меню сообщение "выбранный. Кнопка контроллера меню теперь отображает элемент "3" MC.
Щелкните стрелку на контроллере меню для отображения параметров. Обратите внимание, что новое значение по умолчанию элемент 3 MCтеперь, подзапросы выборки.
См. также
Задачи
Пошаговое руководство: Добавление панели инструментов в окно инструментов
Пошаговое руководство. Добавление панели инструментов в IDE
Другие ресурсы
Пошаговые руководства, для команд меню, панелей инструментов