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


Пошаговое руководство: Добавление контроллера меню на панели инструментов

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

Контроллер меню управление разбиения. Левая сторона контроллера меню отображает последн-используемую команду и может быть запущена, щелкните ее. Правая часть контроллера меню, щелчок стрелку, которая позволяет открыть список дополнительных команд. При выборе команды в списке, команда выполняется, и она заменяет команда слева контроллера меню. Таким образом, контроллеры меню работает как кнопка, которая всегда показывает последн-используемую команду из списка.

Контроллеры меню могут появиться в меню, но наиболее часто используются на панелях инструментов.

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

Обязательные компоненты

Чтобы выполнить это пошаговое руководство, необходимо устанавливать SDK для Visual Studio 2010.

Примечание

Дополнительные сведения о пакете SDK для Visual Studio см. в разделе интеграция SDK Visual Studio.Чтобы узнать, как загрузить пакет SDK для Visual Studio см. в разделе Центр разработчиков расширяемости Visual Studio на веб-сайте MSDN.

Создать контроллер меню

Создать контроллер меню

  1. Следуйте процедурами, описанным в разделе how Пошаговое руководство: Добавление панели инструментов в окно инструментов создание окно инструментов VSPackage, которое содержит панель инструментов.

  2. IN Обозреватель решенийдважды щелкните TWToolbar.vsct, чтобы открыть его в текстовом редакторе.

  3. в Символы в раздел " 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" />
    
  4. в Меню раздел после последней записи меню задает контроллер меню в меню.

    <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 флаги необходимо включить, чтобы разрешить в контроллере меню, чтобы отразить последней выбранной команды.

  5. в Группы раздел после последней записи группы, добавляет группу контроллера меню.

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    

    Устанавливая контроллер меню, что и родительский все команды, помещенные в этой группе будут отображаться в контроллер меню. priority атрибут опущен, в котором задается значение по умолчанию 0поскольку является единственной группой на контроллере меню.

  6. в Кнопки раздел после последней записи кнопки добавить 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>
    
  7. На этом этапе можно найти контроллер меню.

    1. Нажмите клавишу F5открыть экземпляр экспериментальном Visual Studio.

    2. На Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку окно инструментов теста.

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

    4. Нажмите стрелку справа от контроллера меню, чтобы увидеть 3 возможных команды.

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

  8. Закройте экспериментальном Visual Studio.

Реализация команды контроллера меню

Реализация команды контроллера меню в управляемом коде

  1. IN Обозреватель решенийдважды щелкните PkgCmdID.cs, чтобы открыть его в текстовом редакторе.

  2. После существующих идентификаторы команд в классе PkgCmdIDList добавьте идентификаторы команд для 3 пунктов меню.

    public const int cmdidMCItem1 = 0x130;
    public const int cmdidMCItem2 = 0x131;
    public const int cmdidMCItem3 = 0x132;
    
  3. IN Обозреватель решенийвыберите команду открыть TWToolbarPackage.cs.

  4. В верхней части класса TWToolbarPackage добавьте следующие строки:

    private int currentMCCommand; // The currently selected menu controller command
    
  5. Найдите скрытая с надписью область "элементами пакета" и развернуть ее, нажав кнопку ввести положительного значения левое поле.

  6. в 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;
        }
    }
    
  7. в конце TWToolbarPackage класс сразу после MenuItemCallback метод добавляет метод для пометки выбранной команды, как проверяется.

    private void OnMCItemQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            mc.Checked = (mc.CommandID.ID == this.currentMCCommand);
        }
    }
    
  8. После 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);
        }
    }
    
  9. Выполните построение решения и исправьте все ошибки, которые происходят.

Тестирование контроллер меню

Тестирование контроллер меню

  1. Нажмите клавишу F5, чтобы открыть экземпляр экспериментальном Visual Studio.

  2. Открытие окно инструментов теста.

    Контроллер меню появляется на панели инструментов в окне инструментов и 1 " MC "отображаются.

  3. Нажмите кнопку со стрелкой контроллера меню налево.

    Откроется диалоговое окно, в котором отображается элемент 1 " контроллера меню сообщение "выбранный. Обратите внимание, что сообщение соответствует текста на кнопке контроллера меню.

  4. Щелкните стрелку на контроллере меню для отображения 3 элементов первого из которых выбирает и имеет окно выделения вокруг его значка. Нажать элемент 3 MC.

    Откроется диалоговое окно, в котором отображается элемент 3 " контроллера меню сообщение "выбранный. Кнопка контроллера меню теперь отображает элемент "3" MC.

  5. Щелкните стрелку на контроллере меню для отображения параметров. Обратите внимание, что новое значение по умолчанию элемент 3 MCтеперь, подзапросы выборки.

См. также

Задачи

Пошаговое руководство: Добавление панели инструментов в окно инструментов

Пошаговое руководство. Добавление панели инструментов в IDE

Другие ресурсы

Пошаговые руководства, для команд меню, панелей инструментов

Команды, меню, панели инструментов