How to: Expor uma Adicionar-no Menu Ferramentas (Visual Basic)
Quando você cria um add-in usando o O Assistente de suplemento 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 O Assistente de suplemento novamente, marque essa opção e então copie seu código existente para o novo suplemento.
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 Exportar configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações. |
Para adicionar um comando de menu para um add-in existente
No Connect classe do add-in, add Implements IDTCommandTarget.
Isso dá 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 How to: Adicionar e comandos da alça.
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ê implemente IDTCommandTarget, você deve adicionar esses dois procedimentos. Uma maneira rápida de fazer isso é selecionar IDTCommandTarget na Nome da classe na caixa suspensa no canto superior esquerdo do editor. Selecione cada procedimento por sua vez o Nome do método a caixa suspensa 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, então, insira o código que você deseja executar no tempo.
Consulte também
Tarefas
How to: Expor uma Adicionar-no Menu Ferramentas (Visual C#)
How to: Adicionar-Ins usando o Adicionar-no Gerenciador de controle