Como: criar e controlar janelas de ferramentas

Janelas em Visual Studio se encaixam em qualquer uma das duas categorias: documentar windows ou janelas de ferramentas.Uma janela do documento é aquele cujo conteúdo é editável pelo Editor de código, como, por exemplo, um arquivo de texto, HTMLou código dentro de uma classe.Uma janela de ferramentas contém um ou mais controles, como, por exemplo, texto, botões, caixas de combinação e assim por diante.O Visual Studio de desenvolvimento integrado ambiente (IDE) usa controles para executar tarefas como, por exemplo, as opções de configuração , erros de exibição ou edição de elementos do projeto .Alguns exemplos são o saída janela, o Lista de Tarefase o caixa de ferramentas. O caixa de ferramentas podem ser movidos em torno do IDE livremente ou encaixada em outras janelas de ferramenta, e você pode usar o LinkedWindows coleção programaticamente vincular ou desvincular janelas de ferramentas no IDE. Para mais informações, consulte Como: alterar as características da janela.

Além de ser usado a automação para manipular janelas de ferramentas existente, você também pode criar suas próprias janelas de ferramentas personalizada usando o CreateToolWindow2 método da Windows2 coleção.

Criando seu próprio personalizado janela de ferramentas você pode preenchê-lo com controles úteis para executar tarefas.Por exemplo, você pode, usar um personalizado janela de ferramentas para exibir as ferramentas especializadas para ajudá-lo a formatar seu código, controlar e alterar as configurações de variável ou executar tarefas de depuração avançada ou a fontecriação de perfil.

O procedimento para criar um personalizado janela de ferramentas é:

  • Criar um controle de usuário (usando um projetode biblioteca de controle do Windows)

  • Adicione os controles desejados em um formulário (botões, caixas de texto e assim por diante) e o código.

  • Compile o projeto em uma DLL.

  • Criar uma nova Visual Studio suplementoprojeto (ou outro projeto, tais como um projetodo aplicativo do Windows).

  • Use o CreateToolWindow2 método para criar uma janela de ferramentas para o host o novo controle de usuário.

Antes de invocar CreateToolWindow2 para criar uma nova janela de ferramentas, você deve mover o controle de usuário (ControlObject) no mesmo assembly como o suplementoou conjunto de controlam de todos os atributos de logon do usuário para torná-lo totalmente visível para COM.(Por exemplo, verificando a Register for COM interop opção nas opções de compilar do projeto.) Se você não fizer isso, o controle será realizar marshaling corretamente e CreateToolWindow2 retornará um valor nulo.

Além de exemplos abaixo, exemplos adicionais janela de ferramentas para cada idioma, bem como outros exemplos de código, estão na Exemplos de Automaçãopara Visual StudiositeWeb .

ObservaçãoObservação

Se você tentar definir qualquer um dos Estados de visibilidade da nova janela de ferramentas — como, por exemplo, altura, largura ou posição — antes que a janela de ferramentas estiver visível, você obterá um erro.Certifique-se de que a janela está visível antes de tentar definir essas propriedades.

ObservaçãoObservação

As caixas de diálogo e comandos de menu você vê podem diferir daquelas descritas na ajuda dependendo de suas configurações ativas ou versão.Esses procedimentos foram desenvolvidos com o General Development Settings ativo.Para alterar as configurações, escolha importação e Exportarconfigurações sobre o Ferramentasmenu. Para mais informações, consulte Configurações de Visual Studio.

A criação de uma janela de ferramentas personalizada

O exemplo a seguir demonstra como criar uma janela de ferramentas em Visual Basic e Visual C#.

ObservaçãoObservação

O código a seguir deve ser executado em um suplemento; ele não pode ser executado em uma macro.

Para criar uma personalizada janela de ferramentas

  • Crie um controle de usuário em um projetode biblioteca de controle do Windows.Aceite o nome padrão de "WindowsControlLibrary1" ou certificar-se de que você altera o nome da asmPath parâmetro no código a seguir corresponder ao nome do seu projetode biblioteca de controle do Windows.

    Como alternativa, no seu código, você pode se referir a um controle de usuário existente.

ObservaçãoObservação

Sua classe de controle de usuário deve ter um System.Runtime.InteropServices.GuidAttribute anexado à definição de classe .

  1. Crie um novo suplemento do projeto.

    Para obter mais informações, consulte: Como: criar um suplemento.

  2. Substituir o OnConnectiono método do suplemento com o seguinte:

    Public Sub OnConnection(ByVal application As Object, ByVal _
    connectMode As ext_ConnectMode, ByVal addInInst As Object, _
    ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        Try
            ' ctlProgID - the ProgID for your user control.
            ' asmPath - the path to your user control DLL.
            ' guidStr - a unique GUID for the user control.
            Dim ctlProgID, asmPath, guidStr As String
            ' Variables for the new tool window that will hold
            ' your user control.
            Dim toolWins As EnvDTE80.Windows2
            Dim toolWin As EnvDTE.Window
            Dim objTemp As Object = Nothing
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
            ctlProgID = "WindowsControlLibrary2.UserControl1"
            ' Replace the <Path to VS Project> with the path to
            ' the folder where you created the WindowsCotrolLibrary.
            ' Remove the line returns from the path before 
            ' running the add-in.
            asmPath = "<Path to VS Project>\My _
              Documents\Visual Studio 2005\Projects\ _
              WindowsControlLibrary2\WindowsControlLibrary2\_
              bin\Debug\WindowsControlLibrary2.dll"
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}"
    
            toolWins = CType(_applicationObject.Windows, Windows2)
            ' Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, _
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, objTemp)
            ' The tool window must be visible before you do anything 
            ' with it, or you will get an error.
            If Not toolWin Is Nothing Then
                toolWin.Visible = True
            End If
               ' Uncomment the code below to set the new tool window's
               ' height and width, and to close it.
            ' MsgBox("Setting the height to 500 and width to 400...")
            ' toolWin.Height = 500
            ' toolWin.Width = 400
            ' MsgBox("Closing the tool window...")
            ' toolWin.Close(vsSaveChanges.vsSaveChangesNo)
    
        Catch ex As Exception
            MsgBox("Exception: " & ex.ToString)
        End Try
    End Sub
    
    // Before running, add a reference to System.Windows.Forms, 
    // using System.Windows.Forms, to the top of the class.
    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        try
        {
            // ctlProgID - the ProgID for your user control.
            // asmPath - the path to your user control DLL.
            // guidStr - a unique GUID for the user control.
            string ctlProgID, asmPath, guidStr;
            // Variables for the new tool window that will hold
            // your user control.
            EnvDTE80.Windows2 toolWins;
            EnvDTE.Window toolWin;
            object objTemp = null;
    
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            ctlProgID = "WindowsControlLibrary2.UserControl1";
            // Replace the <Path to VS Project> with the path to
            // the folder where you created the WindowsCotrolLibrary.
            // Remove the line returns from the path before 
            // running the add-in.
            asmPath = @"c:\My Documents\Visual Studio 2005\Projects\
              WindowsControlLibrary2\WindowsControlLibrary2\bin\
              Debug\WindowsControlLibrary2.dll";
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}";
    
            toolWins = (Windows2)_applicationObject.Windows;
            // Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, 
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, 
              ref objTemp);
            // The tool window must be visible before you do anything 
            // with it, or you will get an error.
            if (toolWin != null)
            {
                toolWin.Visible = true;
            }
            // Set the new tool window's height and width, 
            // and then close it.
            System.Windows.Forms.MessageBox.Show("Setting the height 
            to 500 and width to 400...");
            toolWin.Height = 500;
            toolWin.Width = 400;
            System.Windows.Forms.MessageBox.Show
              ("Closing the tool window...");
            toolWin.Close(vsSaveChanges.vsSaveChangesNo);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Exception: " 
              + ex.Message);
        }
    }
    

    Nota o código anterior requer uma referência para o System.Windows.Forms namespace.

  3. Alterar os valores de ctlProgID, asmPath, e guidStr variáveis que refletem seu controle de usuário .

  4. Criar e executar o projeto.

  5. Sobre o Ferramentas menu, clique em Gerenciador de suplementos para ativar o suplemento.

Você vê seu novo janela de ferramentas flutuante no IDE.Você pode movê-lo em qualquer lugar que desejar ou encaixar -lo com outras janelas de ferramenta.

Consulte também

Tarefas

Como: alterar as características da janela

Como: criar um suplemento

Passo a passo: Criando um assistente

Conceitos

Controlando as configurações de opções

Gráfico de modelo de objeto de automação

Outros recursos

Criar e controlar o ambiente Windows

A criação de suplementos e assistentes

Automação e extensibilidade referência