Como: expor um suplemento no Menu Ferramentas (Visual Basic)
Quando você cria um add-in usando o Assistente Add-In e selecione a opção para exibi-lo como um comando, o comando está no Ferramentas menu por padrão.Se você ignorar essa opção quando você cria o add-in, no entanto, você pode simplesmente executar o Assistente Add-In novamente, marque essa opção e então copie seu código existente para o novo add-in.
Se isso não for possível, porém, o procedimento a seguir realiza a mesma coisa.
Observação |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o General Development Settings ativo.Para alterar as configurações, escolha importação e Exportarconfigurações sobre o Ferramentas menu.Para obter mais informações, consulte Configurações de Visual Studio. |
Para adicionar um comando de menu para um suplemento existente
No Connect classe de suplemento, adicione Implements IDTCommandTarget.
Isso permite o acesso para o IDTCommandTarget interface de comandos que é necessário para a criação de comandos.
No OnConnection procedimento, adicione o seguinte:
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
Esse código é executado quando o suplemento é carregado ("conectado") em Visual Studio.Ele determina se o suplemento foi carregado com um ext_ConnectMode valor de ext_cm_UISetup.Isso significa que o suplemento foi iniciado pela primeira vez desde que está sendo instalado.Se isso é verdadeiro, então um comando é criado para ele no Ferramentas menu usando o AddNamedCommand método.Para obter mais informações, consulte Como: adicionar e manipular comandos.
Adicionar os dois procedimentos a seguir para o Connect classe.
O QueryStatus método é chamado quando a disponibilidade do comando é atualizada.O Exec método é chamado quando o comando é chamado.
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
Cada vez que você implementa IDTCommandTarget, você deve adicionar esses dois procedimentos.Uma maneira rápida de fazer isso é selecionar IDTCommandTarget no O nome da classe caixa suspensa, no canto superior esquerdo do editor.Selecione cada procedimento separadamente a partir do Nome do método caixa drop-down no canto superior direito.Isso cria os procedimentos vazios necessários com os parâmetros corretos para o qual você pode adicionar código.
O Exec procedimento é chamado quando um usuário clica em seu comando de menu, assim, insira o código existente ali que você deseja executar neste momento.
Consulte também
Tarefas
Como: expor um suplemento no Menu Ferramentas (Visual C#)
Como: Add-Ins de controle, usando o Gerenciador de suplemento