Partilhar via


Passo a passo: Adicionando um controlador de Menu para uma barra de ferramentas.

Esta explicação passo a passo baseia-se na Adicionando uma barra de ferramentas para uma janela de ferramenta passo a passo e mostra como adicionar um controlador de menu na barra de ferramentas da janela de ferramenta. As etapas mostradas aqui também podem ser aplicadas à barra de ferramentas que é criada no explicação passo a passo, Adicionando uma barra de ferramentas ao IDE.

Um controlador de menu é um controle de divisão. O lado esquerdo do controlador menu mostra o comando usado por último, e ele pode ser executado clicando nele. O lado direito do controlador de menu é uma seta que, quando clicado, abre uma lista de comandos adicionais. Quando você clica em um comando na lista, a execução do comando, e substitui o comando no lado esquerdo do controlador de menu. Dessa forma, o controlador de menu opera como um botão de comando que sempre mostra o comando usado por último em uma lista.

Controladores de menu podem ser exibidos nos menus, mas eles são mais frequentemente usados nas barras de ferramentas.

Esta explicação passo a passo demonstra um controlador de menu que oferece três opções selecionáveis, que são definidas no arquivo .vsct. Para obter mais informações sobre a menus e os arquivos de .vsct, consulte Comandos, Menus e barras de ferramentas.

Pré-requisitos

Para concluir este passo a passo, você deve instalar o SDL do Visual Studio 2010.

Dica

Para obter mais informações sobre o SDK de Visual Studio, consulte Ampliando a visão geral de Visual Studio.Para descobrir como fazer o download do SDK do Visual Studio, consulte Visual Studio extensibilidade Developer Center no site do MSDN.

Criando um controlador de Menu

Para criar um controlador de menu

  1. Siga os procedimentos descritos em Passo a passo: Adicionando uma barra de ferramentas para uma janela de ferramenta para criar uma janela de ferramenta VSPackage que possui uma barra de ferramentas.

  2. Em Solution Explorer, clique duas vezes em TWToolbar.vsct para abri-lo em um editor de texto.

  3. No símbolos seção, o GuidSymbol elemento chamado "guidTWToolbarCmdSet", declare o seu controlador de menu, o grupo de controlador de menu e três itens de menu.

    <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. No Menus seção, após a última entrada de menu, definir o controlador do menu como menu.

    <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>
    

    O TextChanges e TextIsAnchorCommand sinalizadores deve ser incluídas para permitir que o controlador de menu refletir o último comando selecionado.

  5. No grupos seção, após a última entrada de grupo, adicione o grupo de controlador de menu.

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

    Definindo o controlador do menu como pai, todos os comandos colocados nesse grupo aparecerá no controlador de menu. O priority atributo for omitido, o que define como o valor padrão de 0, pois ele será o único grupo no controlador de menu.

  6. No botões seção, após a última entrada de botão, adicione um botão elemento para cada um dos seus itens de menu.

    <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. Neste ponto, você pode examinar o controlador do menu.

    1. Pressione F5para abrir uma instância do experimental Visual Studio.

    2. Sobre o Exibir , aponte para Other Windowse, em seguida, clique em Janela da ferramenta de teste.

    3. O controlador de menu é exibido na barra de ferramentas na janela da ferramenta.

    4. Clique na seta no lado direito do controlador de menu para ver os três comandos possíveis.

    Observe que, quando você clica em um comando, o lado esquerdo do controlador de menu muda para exibir esse comando. Na próxima seção, adicionaremos o código para ativar esses comandos.

  8. Feche o experimental Visual Studio.

Implementando os comandos de Menu controlador

Para implementar os comandos de menu controlador em código gerenciado

  1. Em Solution Explorer, clique duas vezes em PkgCmdID.cs para abri-lo em um editor de texto.

  2. Após as IDs de comando existente na classe PkgCmdIDList, adicione IDs de comando de três itens de menu.

    public const int cmdidMCItem1 = 0x130;
    public const int cmdidMCItem2 = 0x131;
    public const int cmdidMCItem3 = 0x132;
    
  3. Em Solution Explorer, abra TWToolbarPackage.cs.

  4. Na parte superior da classe TWToolbarPackage, adicione o seguinte:

    private int currentMCCommand; // The currently selected menu controller command
    
  5. Localize a região oculta rotulado como "Membros do pacote" e expandi-lo clicando no sinal de adição na margem esquerda.

  6. No Initialize método, imediatamente após a última chamada para o AddCommand método, adicione código para rotear os eventos para cada comando pelos mesmos manipuladores.

    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. No final o TWToolbarPackage da classe, o botão direito do mouse após o MenuItemCallback método, adicionar um método para marcar o comando selecionado como checked.

    private void OnMCItemQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            mc.Checked = (mc.CommandID.ID == this.currentMCCommand);
        }
    }
    
  8. Após a OnMCItemQueryStatus método, adicione um manipulador de eventos para quando o usuário seleciona um comando no controlador de menu:

    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. Criar a solução e corrigir quaisquer erros que ocorram.

Teste o controlador de Menu

Para testar o controlador de menu

  1. Pressione F5 para abrir uma instância do experimental Visual Studio.

  2. Abrir o janela de ferramenta de teste.

    O controlador de menu é exibido na barra de ferramentas na janela da ferramenta e exibe "MC Item 1".

  3. Clique no botão do controlador de menu à esquerda da seta.

    Uma caixa de diálogo aparece e exibe a mensagem "Controlador de Menu selecionado o Item 1". Observe que a mensagem correspondente ao texto no botão menu controlador.

  4. Clique na seta no controlador de menu para exibir três itens, dos quais o primeiro está selecionado e tem uma caixa de realce ao redor de seu ícone. Clique em Item MC 3.

    Uma caixa de diálogo aparece e exibe a mensagem "Controlador de Menu selecionado o Item 3". O botão de menu do controlador agora exibe "MC Item 3".

  5. Clique na seta no controlador de menu para exibir as opções. Observe que o novo padrão, MC Item 3, agora está selecionada.

Consulte também

Tarefas

Passo a passo: Adicionando uma barra de ferramentas para uma janela de ferramenta

Passo a passo: Adicionando uma barra de ferramentas ao IDE

Outros recursos

Explicações passo a passo para comandos, Menus e barras de ferramentas

Comandos, Menus e barras de ferramentas