Condividi tramite


Procedura: esporre un componente aggiuntivo in un menu di scelta rapida

Se è vero che il modello di automazione di Visual Studio semplifica l'inserimento dei comandi di un componente aggiuntivo nei menu di primo livello, ad esempio nel menu Strumenti, è anche possibile aggiungere comandi ai menu e sottomenu di scelta rapida.

Per eseguire questa operazione, è tuttavia necessario utilizzare il modello a oggetti della barra dei comandi di Microsoft Visual Studio per definire in modo esplicito il menu e il sottomenu di scelta rapida di destinazione.Quindi, è necessario chiamare il metodo AddControl di Visual Studio.

I menu di scelta rapida sono simili agli altri menu di Visual Studio. Per visualizzarli, è necessario selezionare una freccia GIÙ nel menu a discesa oppure fare clic con il pulsante destro del mouse su un elemento nell'ambiente di sviluppo integrato (IDE).

Per aggiungere un comando a un menu di scelta rapida, o a un altro menu o barra degli strumenti, è innanzitutto necessario conoscere il nome del comando.Per individuarlo, esplorare il nodo Tastiera nella finestra di dialogo Opzioni sul menu Strumenti.

Nella procedura seguente viene illustrato come aggiungere un comando di un componente aggiuntivo al menu di scelta rapida Elenco attività.

[!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 un componente aggiuntivo a un menu di scelta rapida

  1. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  2. Nella finestra di dialogo Nuovo progetto espandere Altri tipi di progetto selezionare Estensibilità, quindi scegliere Componente aggiuntivo Visual Studio nel riquadro Modelli.

    Assegnare al componente aggiuntivo il nome ContextCmd, quindi fare clic su OK per avviare la Creazione guidata componente aggiuntivo di Visual Studio.

  3. Creare anche un'interfaccia utente per il componente aggiuntivo selezionando la casella Creare un'interfaccia utente con barra dei comandi per il componente aggiuntivo?.

    Verrà aggiunto il codice d'interfaccia utente necessario al metodo OnConnection.Verranno aggiunti anche il metodo Exec, che gestisce l'evento generato quando si seleziona il comando del componente aggiuntivo, e il metodo QueryStatus, che fornisce informazioni sullo stato del componente aggiuntivo.

  4. Sostituire il codice con quanto segue:

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Connect
    
        Implements IDTExtensibility2
        Implements IDTCommandTarget
    
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
    
        Dim cmdBarCtl As CommandBarControl
    
        Public Sub New()
        End Sub
    
        Public Sub OnConnection(ByVal application As Object, ByVal _
          connectMode As ext_ConnectMode, ByVal addInInst As Object, _
          ByRef custom As Array) Implements _
          IDTExtensibility2.OnConnection
            Dim cmd As Command
            Dim cmdBar As CommandBar
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
    
            Try
                If CType(ext_ConnectMode.ext_cm_AfterStartup Or _
                  ext_ConnectMode.ext_cm_Startup, Boolean) Then
                    ' If the command does not exist, add it.
                    If cmd Is Nothing Then
                        cmd = _applicationObject.Commands. _
                          AddNamedCommand(_addInInstance, _
                          "newCmd", "newCmd", "Runs the add-in.", _
                          True, 59, Nothing, _
                          vsCommandStatus.vsCommandStatusSupported _
                          Or vsCommandStatus.vsCommandStatusEnabled)
                    End If
    
                    ' Reference the Task List shortcut menu.
                    cmdBar = CType(_applicationObject. _
                      CommandBars.Item("Task List"), _
                      Microsoft.VisualStudio.CommandBars.CommandBar)
    
                    ' Add a command to the Task List's shortcut menu.
                    cmdBarCtl = CType(cmd.AddControl(cmdBar, _
                      cmdBar.Controls.Count + 1), _
                      Microsoft.VisualStudio.CommandBars. _
                      CommandBarControl)
                    cmdBarCtl.Caption = "A New Command"
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnDisconnection(ByVal disconnectMode As _
          ext_DisconnectMode, ByRef custom As Array) Implements _
          IDTExtensibility2.OnDisconnection
            Try
                ' Delete the command bar control from the 
                   ' shortcut menu.
                If Not (cmdBarCtl Is Nothing) Then
                    cmdBarCtl.Delete()
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
          IDTExtensibility2.OnAddInsUpdate
        End Sub
    
        Public Sub OnStartupComplete(ByRef custom As Array) Implements _
          IDTExtensibility2.OnStartupComplete
        End Sub
    
        Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
          IDTExtensibility2.OnBeginShutdown
        End Sub
    
        Public Sub QueryStatus(ByVal commandName As String, ByVal _
          neededText As vsCommandStatusTextWanted, ByRef status As _
          vsCommandStatus, ByRef commandText As Object) Implements _
          IDTCommandTarget.QueryStatus
            If commandName = "ContextCmd.Connect.newCmd" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            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 = "ContextCmd.Connect.newCmd" Then
                    handled = True
                    System.Windows.Forms.MessageBox.Show("Add-in _
                      running...")
                End If
            End If
        End Sub
    End Class
    
  5. Aggiungere il codice che si desidera venga eseguito quando si seleziona il comando nella routine Exec.

  6. Compilare il componente aggiuntivo ed eseguirlo.

  7. Visualizzare l'Elenco attività scegliendo Elenco attività dal menu Visualizza.

  8. Scegliere Gestione componenti aggiuntivi dal menu Strumenti.

  9. Attivare il componente aggiuntivo ContextCmd selezionando la casella corrispondente in Gestione componenti aggiuntivi.

  10. Fare clic con il pulsante destro del mouse su Elenco attività.

    Nel menu di scelta rapida verrà visualizzato il comando del componente aggiuntivo ContextCmd.

Vedere anche

Attività

Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi

Procedura: creare un componente aggiuntivo

Procedura dettagliata: creazione di una procedura guidata

Riferimenti

Comandi e opzioni di Visual Studio

Concetti

Visualizzazione di componenti aggiuntivi nei menu e sulle barre degli strumenti

Registrazione di un componente aggiuntivo

Grafico del modello a oggetti di automazione

Altre risorse

Creazione di componenti aggiuntivi e di procedure guidate