Gewusst wie: Verfügbarmachen eines Add-Ins in einem Kontextmenü
Während Sie Add-In-Befehle mit dem Visual Studio-Automatisierungsmodell leicht zu Menüs der oberen Ebene, z. B. dem Menü Extras, hinzufügen können, gibt es auch die Möglichkeit, Befehle in Kontextmenüs und Untermenüs aufzunehmen.
Zu diesem Zweck müssen Sie jedoch das Microsoft Visual Studio Command Bar-Objektmodell verwenden, um das Zielkontextmenü oder Zieluntermenü explizit anzugeben. Anschließend müssen Sie die Visual Studio AddControl-Methode aufrufen.
Kontextmenüs sind vergleichbar mit anderen Menüs in Visual Studio. Um auf diese Menüs zuzugreifen, zeigen Sie auf einen Abwärtspfeil in einem Dropdownmenü oder klicken mit der rechten Maustaste auf ein Element in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE).
Um einem Kontextmenü (bzw. einem Menü oder einer Symbolleiste) einen Befehl hinzuzufügen, müssen Sie zuerst den Befehlsnamen kennen. Durchsuchen Sie dazu im Menü Extras im Dialogfeld Optionen den Knoten Tastatur.
Anhand des folgenden Verfahrens wird veranschaulicht, wie dem Kontextmenü der Aufgabenliste ein Add-In-Befehl hinzugefügt wird.
Tipp
Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert. Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.
So fügen Sie einem Kontextmenü einen Add-In-Befehl hinzu
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Erweitern Sie im Dialogfeld Neues Projekt die Option Andere Projekttypen, klicken Sie auf Erweiterungen und dann im Bereich Vorlagen auf Add-In für Visual Studio.
Benennen Sie das Add-In mit ContextCmd, und klicken Sie auf OK, um den Visual Studio-Add-In-Assistenten zu starten.
Wählen Sie die Option zum Erstellen einer Benutzeroberfläche für das Add-In aus, indem Sie das Kontrollkästchen Soll eine Befehlszeilen-Benutzeroberfläche für das Add-In erstellt werden? aktivieren.
Dadurch wird der OnConnection-Methode Benutzeroberflächen-Code hinzugefügt. Zusätzlich wird die Exec-Methode hinzugefügt, durch die das Ereignis behandelt wird, sobald ein Benutzer auf den Add-In-Befehl klickt. Außerdem wird die QueryStatus-Methode hinzugefügt, die Informationen zum Status des Add-Ins bereitstellt.
Ersetzen Sie den Code durch Folgendes:
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
Fügen Sie den Code, der beim Klicken auf den Befehl ausgeführt werden soll, in der Exec-Prozedur hinzu.
Erstellen Sie das Add-In, und führen Sie es dann aus.
Zeigen Sie die Aufgabenliste an, indem Sie im Menü Ansicht auf Aufgabenliste klicken.
Klicken Sie im Menü Extras auf Add-In-Manager.
Aktivieren Sie das Add-In mit dem Namen ContextCmd, indem Sie das daneben angezeigte Kontrollkästchen im Add-In-Manager aktivieren.
Klicken Sie mit der rechten Maustaste auf die Aufgabenliste.
Der Add-In-Befehl ContextCmd wird im Kontextmenü angezeigt.
Siehe auch
Aufgaben
Gewusst wie: Steuern von Add-Ins mit dem Add-In-Manager
Gewusst wie: Erstellen von Add-Ins
Exemplarische Vorgehensweise: Erstellen eines Assistenten
Referenz
Visual Studio-Befehle und -Schalter
Konzepte
Anzeigen von Add-Ins auf Symbolleisten und in Menüs
Diagramm "Automationsobjektmodell"