Condividi tramite


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

  1. 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.

  2. 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.

  3. 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

Concetti

Grafico del modello a oggetti di automazione