Procedura: esporre un componente aggiuntivo nel menu Strumenti (Visual C#)
Quando si crea un componente aggiuntivo utilizzando la Creazione guidata componente aggiuntivo e si seleziona l'opzione per visualizzarlo come comando, il comando viene incluso nel menu Strumenti per impostazione predefinita.Se si ignora questa opzione durante la creazione del componente aggiuntivo, è possibile eseguire nuovamente la Creazione guidata componente aggiuntivo, selezionare l'opzione e copiare il codice esistente nel nuovo componente aggiuntivo.
Se non è possibile eseguire questa operazione, l'alternativa consiste nell'utilizzare la routine riportata di seguito.
[!NOTA]
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa/EsportaImpostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.
Per aggiungere un comando di menu a un componente aggiuntivo esistente
Aggiungere queste istruzioni using al file contenente la classe Connect.
using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms;
Modificare la dichiarazione della classe Connect in modo che implementi IDTCommandTarget.
Sostituire o modificare il codice della routine OnConnection() come segue:
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) { } } }
Aggiungere le due routine necessarie riportate di seguito, 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; } } }
Ogni volta che viene implementato l'oggetto IDTCommandTarget, è necessario aggiungere queste due routine.Un metodo rapido per eseguire questa operazione consiste nel selezionare l'oggetto IDTCommandTarget nella casella di riepilogo a discesa Nome classe nell'angolo superiore sinistro dell'editor.Selezionare ogni routine dalla casella di riepilogo a discesa Nome metodo nell'angolo superiore destro.In questo modo, vengono create le necessarie routine vuote con i parametri corretti ai quali sarà possibile aggiungere il codice.
La routine Exec viene chiamata quando un utente sceglie il comando di menu, pertanto è la posizione in cui è necessario inserire il codice che si desidera eseguire in quel momento.
Vedere anche
Attività
Procedura: esporre un componente aggiuntivo nel menu Strumenti (Visual Basic)
Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi
Procedura: creare un componente aggiuntivo