Compartilhar via


Como: Expor um suplemento no Menu Ferramentas (translation from VPE for Csharp Visual)

Quando você criar um add-in usando o Assistente de suplemento e selecionar a opção para exibi-lo sistema autônomo um comando, o comando está sobre o Ferramentas menu por padrão.Se você ignorar essa opção quando você criar o suplemento, entretanto, você pode simplesmente executar o Assistente de suplemento novamente, marque essa opção e em seguida, copie o código existente para o novo suplemento.

Se isso não for possível, porém, o procedimento a seguir produz o mesmo resultado.

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para adicionar um comando de menu um suplemento existente

  1. Substituir ou alterar Connect classe e OnConnection() código do procedimento a seguir:

    using Microsoft.VisualStudio.CommandBars;
    using System.Resources;
    using System.Reflection;
    using System.Globalization;
    
    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        if(connectMode == ext_ConnectMode.ext_cm_UISetup)
        {
            object []contextGUIDS = new object[] { };
            Commands2 commands = (Commands2)_applicationObject.Commands;
            string toolsMenuName;
    
            try
            {
                ResourceManager resourceManager = new     
                  ResourceManager("MyAddin1.CommandBar",  
                  Assembly.GetExecutingAssembly());
                CultureInfo cultureInfo = new 
                  System.Globalization.CultureInfo
                  (_applicationObject.LocaleID);
                string resourceName = String.Concat(cultureInfo.
                  TwoLetterISOLanguageName, "Tools");
                toolsMenuName = resourceManager.GetString(resourceName);
            }
            catch
            {
                toolsMenuName = "Tools";
            }
    
            CommandBar menuBarCommandBar = 
              ((CommandBars)_applicationObject.CommandBars)
              ["MenuBar"];
    
              CommandBarControl toolsControl = 
                menuBarCommandBar.Controls[toolsMenuName];
              CommandBarPopup toolsPopup = 
                (CommandBarPopup)toolsControl;
    
              try
              {
                  Command command = commands.AddNamedCommand2
                    (_addInInstance, "MyAddin1", "MyAddin1", "Executes  
                    the command for MyAddin1", true, 59, ref 
                    contextGUIDS, (int)vsCommandStatus.
                    vsCommandStatusSupported+(int)vsCommandStatus.
                    vsCommandStatusEnabled, (int)vsCommandStyle.
                    vsCommandStylePictAndText, vsCommandControlType.
                    vsCommandControlTypeButton);
    
                  if((command != null) && (toolsPopup != null))
                  {
                         command.AddControl(toolsPopup.CommandBar, 1);
                  }
            }
            catch(System.ArgumentException)
            {
            }
        }
    }
    
  2. Adicione os seguintes dois necessários procedimentos, QueryStatus e Exec:

    public void QueryStatus(string commandName, 
      vsCommandStatusTextWanted neededText, ref vsCommandStatus status, 
      ref object commandText)
    {
        if(neededText == 
          vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
        {
            if(commandName == "MyAddin1.Connect.MyAddin1")
            {
                status = (vsCommandStatus)vsCommandStatus.
                  vsCommandStatusSupported|vsCommandStatus.
                  vsCommandStatusEnabled;
                return;
            }
        }
    }
    
    public void Exec(string commandName, vsCommandExecOption 
      executeOption, ref object varIn, ref object varOut, ref bool 
      handled)
    {
        handled = false;
        if(executeOption ==  
          vsCommandExecOption.vsCommandExecOptionDoDefault)
        {
            if(commandName == "MyAddin1.Connect.MyAddin1")
            {
                handled = true;
                    System.Windows.Forms.MessageBox.
                      Show("add-in running.");
                return;
            }
        }
    }
    

    Cada time implementar IDTCommandTarget, você deve adicionar desses dois procedimentos. Uma maneira rápida de fazer isso é selecionar IDTCommandTarget no nome de classe lista suspensa no canto superior esquerdo do editor.selecionar cada procedimento por sua vez do Nome do método suspensa caixa no canto superior direito.Isso cria os procedimentos vazios necessários com os parâmetros corretos para o qual você pode adicionar código.

    The Exec procedimento é chamado quando um usuário clica em seu comando de menu, então, código inserir lá que você deseja executar neste momento.

Consulte também

Tarefas

Como: Expor um suplemento no Menu Ferramentas (Visual Basic)

Como: Add-ins de controle com o Gerenciador de suplemento

Como: Criar um suplemento

Conceitos

Gráfico do modelo de objetos de automação