Procedura: esporre un componente aggiuntivo nel menu Strumenti (Visual Basic)
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, utilizzare in alternativa la procedura 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/Esporta Impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Gestione delle impostazioni.
Per aggiungere un comando di menu a un componente aggiuntivo esistente
Nella classe Connect del componente aggiuntivo aggiungere Implements IDTCommandTarget.
In questo modo si ottiene l'accesso all'interfaccia dei comandi IDTCommandTarget necessaria per la creazione di comandi.
Nella routine OnConnection aggiungere il codice riportato di seguito:
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) If connectMode = ext_ConnectMode.ext_cm_Startup Then Dim commands As Commands2 = CType(_applicationObject.Commands, _ Commands2) Dim toolsMenuName As String Try Dim resourceManager As System.Resources.ResourceManager = _ New System.Resources.ResourceManager _ ("MyAddin1.CommandBar", System.Reflection.Assembly. _ GetExecutingAssembly()) Dim cultureInfo As System.Globalization.CultureInfo = New _ System.Globalization.CultureInfo(_applicationObject. _ LocaleID) toolsMenuName = resourceManager.GetString(String.Concat _ (cultureInfo.TwoLetterISOLanguageName, "Tools")) Catch e As Exception toolsMenuName = "Tools" End Try Dim commandBars As CommandBars = _ CType(_applicationObject.CommandBars, CommandBars) Dim menuBarCommandBar As CommandBar = _ commandBars.Item("MenuBar") Dim toolsControl As CommandBarControl = _ menuBarCommandBar.Controls.Item(toolsMenuName) Dim toolsPopup As CommandBarPopup = CType(toolsControl, _ CommandBarPopup) Try Dim command As Command = _ commands.AddNamedCommand2(_addInInstance, "MyAddin1", _ "MyAddin1", "Executes the command for MyAddin1", True, _ 59, Nothing, CType(vsCommandStatus. _ vsCommandStatusSupported, Integer) + _ CType(vsCommandStatus.vsCommandStatusEnabled, _ Integer), vsCommandStyle.vsCommandStylePictAndText, _ vsCommandControlType.vsCommandControlTypeButton) command.AddControl(toolsPopup.CommandBar, 1) Catch argumentException As System.ArgumentException End Try End If
Questo codice viene eseguito al caricamento ("collegamento") del componente aggiuntivo in Visual Studio. Determina se il componente aggiuntivo è stato caricato con un valore ext_ConnectMode di ext_cm_UISetup. Questo significa che il componente aggiuntivo è stato avviato per la prima volta dopo l'installazione. In questo caso, viene creato un comando per il componente aggiuntivo nel menu Strumenti utilizzando il metodo AddNamedCommand. Per ulteriori informazioni, vedere Procedura: aggiungere e gestire comandi.
Aggiungere le due routine riportate di seguito alla classe Connect.
Il metodo QueryStatus viene chiamato all'aggiornamento della disponibilità del comando. Il metodo Exec viene chiamato quando viene chiamato il comando.
Public Sub QueryStatus(ByVal commandName As String, _ ByVal neededText As vsCommandStatusTextWanted, ByRef status As _ vsCommandStatus, ByRef commandText As Object) Implements _ IDTCommandTarget.QueryStatus If neededText = vsCommandStatusTextWanted. _ vsCommandStatusTextWantedNone Then If commandName = "MyAddin1.Connect.MyAddin1" Then status = CType(vsCommandStatus.vsCommandStatusEnabled _ + vsCommandStatus.vsCommandStatusSupported, _ vsCommandStatus) Else status = vsCommandStatus.vsCommandStatusUnsupported End If End If End Sub Public Sub Exec(ByVal commandName As String, ByVal executeOption _ As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _ Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec handled = False If executeOption = vsCommandExecOption. _ vsCommandExecOptionDoDefault Then If commandName = "MyAddin1.Connect.MyAddin1" Then handled = True Exit Sub End If End If End Sub
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 C#)
Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi
Procedura: creare un componente aggiuntivo