Partilhar via


How to: Criar e controlar ferramenta Windows

O Windows em Visual Studio se enquadram em uma das duas categorias: janelas de documento ou a ferramenta windows. Uma janela de documento é aquele cujo conteúdo é editável pelo Editor de código, como, por exemplo, um arquivo de texto, HTML ou código dentro de uma classe. Uma janela de ferramenta contém um ou mais controles, como, por exemplo, botões, texto, caixas de combinação e assim por diante. O Visual Studio o ambiente de desenvolvimento integrado (IDE) usa controles para executar tarefas como a definição de opções, exibindo os erros ou editando elementos de 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 encaixado com outras janelas de ferramenta, e você pode usar o LinkedWindows coleção programaticamente, vincular ou desvincular as janelas de ferramentas no IDE. Para obter mais informações, consulte How to: Alterar Características da janela.

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

Criando sua própria janela de ferramenta personalizada, você pode preenchê-lo com controles úteis para executar tarefas. Por exemplo, você pode, use uma janela de ferramenta personalizada para exibir as ferramentas especializadas para ajudá-lo a formatar seu código, controlar e alterar as configurações de variáveis ou executar tarefas avançadas de depuração ou o perfil de origem.

O procedimento para criar uma janela de ferramenta personalizada é:

  • Criar um controle de usuário (usando um projeto de 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 o projeto de suplemento (ou outro projeto, como, por exemplo, um projeto Windows Application).

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

Antes de invocar CreateToolWindow2 para criar uma nova janela de ferramenta, você deve mover o controle de usuário (ControlObject) no mesmo assembly como todos os add-in, ou definir os atributos no controle de usuário para torná-lo totalmente visível para com. (Por exemplo, a verificação de Register for COM interop opções de compilação de opção do projeto.) Se você não fizer isso, o controle não controlará corretamente e CreateToolWindow2 retornará um valor nulo.

Além de exemplos abaixo, exemplos de janela de ferramenta adicional para cada idioma, bem como outros exemplos de código estão na Amostras de automação para Visual Studio site da Web.

ObservaçãoObservação

Se você tentar definir qualquer um dos Estados de visibilidade da nova janela de ferramenta — 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 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.

A criação de uma janela de ferramenta personalizada

O exemplo a seguir demonstra como criar uma janela de ferramenta no 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 janela de ferramenta personalizada

  • Crie um controle de usuário em um projeto de 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 projeto de 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 projeto de suplemento.

    Para obter mais informações, consulte: How to: Criar um Adicionar-.

  2. Substituir o OnConnection 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 toolWins 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 (toolWins != 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);
        }
    }
    

    Notao código anterior requer uma referência a System.Windows.Forms namespace.

  3. Alterar os valores de ctlProgID, asmPath, e guidStr variáveis para refletir o seu controle de usuário.

  4. Criar e executar o projeto.

  5. Sobre o Ferramentas menu, clique em Gerenciador de suplementos para ativar o add-in.

Você verá sua nova janela de ferramentas flutuante no IDE. Você pode movê-lo para qualquer lugar que gosta e ancorá-la com outras janelas de ferramenta.

Consulte também

Tarefas

How to: Alterar Características da janela

How to: Criar um Adicionar-

Walkthrough: Criando um assistente

Conceitos

ControlandoConfiguraçõesde Opções

Automation Object Model Chart

Outros recursos

Criar e controlar o ambiente Windows

Criação de assistentes e ins Adicionar-

Automation and Extensibility Reference