Cómo: Mostrar un complemento en el menú Herramientas (Visual C#)
Actualización: noviembre 2007
Cuando se crea un complemento mediante el Asistente para complementos y se selecciona la opción de mostrarlo como comando, este comando se encuentra, de forma predeterminada, en el menú Herramientas. Sin embargo, si omite esta opción al crear el complemento, simplemente ejecute de nuevo el Asistente para complementos, active esa opción y luego copie el código existente en el nuevo complemento.
No obstante, si no es posible, el procedimiento siguiente genera el mismo resultado.
Nota: |
---|
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Estos procedimientos se desarrollaron con la Configuración general de desarrollo activa. Para cambiar la configuración, elija la opción Importar y exportarconfiguraciones del menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio. |
Para agregar un comando de menú a un complemento existente
Reemplace o cambie la clase Connect y el código de procedimiento OnConnection() del complemento por lo siguiente:
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) { } } }
Agregue los dos procedimientos necesarios siguientes, QueryStatus y 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 vez que implemente IDTCommandTarget, debe agregar estos dos procedimientos. Una forma rápida de hacerlo es seleccionar IDTCommandTarget en el cuadro de lista desplegable Nombre de clase en la esquina superior izquierda del editor. Seleccione, a su vez, cada procedimiento del cuadro de lista desplegable Nombre del método en la esquina superior derecha. De esta forma, se crean los procedimientos vacíos necesarios con los parámetros correctos a los que puede agregar código.
Cuando un usuario hace clic en el comando de menú, se llama al procedimiento Exec; por lo tanto, inserte aquí el código que desee ejecutar en ese momento.
Vea también
Tareas
Cómo: Mostrar un complemento en el menú Herramientas (Visual Basic)
Cómo: Controlar complementos con el Administrador de complementos