Udostępnij za pośrednictwem


Jak: narazić dodatek programu w Menu narzędzia (Visual C#)

Podczas tworzenia Dodaj w za pomocą Kreatora Add-In i wybierz opcję, aby wyświetlić ją jako polecenia, polecenie znajduje się na Narzędzia menu domyślnie.Jeśli pominiesz tej opcji podczas tworzenia dodatku, jednakże można po prostu uruchomić Kreatora Add-In ponownie, zaznaczenie tego pola wyboru, a następnie skopiować istniejący kod do nowego dodatku.

Jeśli w ten sposób nie jest możliwe, chociaż, następująca procedura daje taki sam rezultat.

[!UWAGA]

Okien dialogowych i poleceń menu, którą widzisz mogą różnić się od tych opisanych w pomocy, w zależności od tego, aktywne ustawienia lub edition.Procedury te zostały opracowane z ogólnych ustawień rozwoju aktywnych.Aby zmienić ustawienia, wybierz polecenie przywóz i wywózUstawienia na Narzędzia menu.Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.

Aby dodać polecenie menu do istniejących dodatek

  1. Dodaj te przy użyciu instrukcji do pliku zawierającego Connect klasy.

    using Microsoft.VisualStudio.CommandBars;
    using System.Resources;
    using System.Reflection;
    using System.Globalization;
    using System.Windows.Forms;
    
  2. Zmiana Connect klasy deklaracji do wprowadzenia w życie IDTCommandTarget.

  3. Zastąpienie lub zmiana OnConnection() Kodeksu postępowania do następującego:

    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)
            {
            }
        }
    }
    
  4. Dodać dwie następujące procedury wymagane, QueryStatus i 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;
            }
        }
    }
    

    Przy każdym zastosowaniu IDTCommandTarget, należy dodać te dwie procedury.Jest szybki sposób to zrobić, zaznacz IDTCommandTarget w Nazwa klasy pola rozwijanego w lewym górnym rogu edytora.Z kolei wybierz każdej procedury z Nazwa metody pola rozwijanego w górnym prawym rogu.Spowoduje to utworzenie niezbędnych procedur pusty z prawidłowych parametrów, które można następnie dodać kod.

    Exec Procedura jest wywoływane, gdy użytkownik kliknie polecenie menu, więc wstawić tam kod, który ma być wykonana w tym czasie.

Zobacz też

Zadania

Jak: narazić dodatek programu w Menu narzędzia (Visual Basic)

Jak: dodatki formantu przy użyciu dodać Menedżera

Jak: Tworzenie dodatku

Koncepcje

Wykres modelu obiektu automatyzacji