Partilhar via


Adicionar uma janela de ferramentas

Neste passo a passo, você aprenderá a criar uma janela de ferramentas e integrá-la ao Visual Studio das seguintes maneiras:

  • Adicione um controle à janela de ferramentas.

  • Adicione uma barra de ferramentas a uma janela de ferramentas.

  • Adicione um comando à barra de ferramentas.

  • Implemente os comandos.

  • Defina a posição padrão para a janela de ferramentas.

Pré-requisitos

O SDK do Visual Studio está incluído como um recurso opcional na instalação do Visual Studio. Para obter mais informações, confira Instalar o SDK do Visual Studio.

Criar uma janela de ferramentas

  1. Crie um projeto chamado FirstToolWindow usando o modelo VSIX e adicione um modelo de item de janela de ferramentas personalizado chamado FirstToolWindow.

    Observação

    Para obter mais informações sobre como criar uma extensão com uma janela de ferramentas, consulte Criar uma extensão com uma janela de ferramentas.

Adicionar um controle à janela de ferramentas

  1. Remova o controle padrão. Abra FirstToolWindowControl.xaml e exclua o botão Clique em mim!.

  2. Na Caixa de Ferramentas, expanda a seção Todos os Controles do WPF e arraste o controle Elemento de Mídia para o formulário FirstToolWindowControl. Selecione o controle e, na janela Propriedades, nomeie esse elemento mediaElement1.

Adicionar uma barra de ferramentas à janela de ferramentas

Ao adicionar uma barra de ferramentas da seguinte maneira, você garante que seus gradientes e cores sejam consistentes com o restante do IDE.

  1. No Gerenciador de Soluções, abra FirstToolWindowPackage.vsct. O arquivo .vsct define os elementos da interface gráfica do usuário (GUI) na janela de ferramentas usando XML.

  2. <Symbols> Na seção, localize o <GuidSymbol> nó cujo name atributo é guidFirstToolWindowPackageCmdSet. Adicione os dois <IDSymbol> elementos a seguir à lista de <IDSymbol> elementos neste nó para definir uma barra de ferramentas e um grupo de barras de ferramentas.

    <IDSymbol name="ToolbarID" value="0x1000" />
    <IDSymbol name="ToolbarGroupID" value="0x1001" />
    
  3. Logo acima da <Buttons> seção, crie uma <Menus> seção semelhante a esta:

    <Menus>
        <Menu guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" priority="0x0000" type="ToolWindowToolbar">
            <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" />
            <Strings>
                <ButtonText>Tool Window Toolbar</ButtonText>
                <CommandName>Tool Window Toolbar</CommandName>
            </Strings>
        </Menu>
    </Menus>
    

    Existem vários tipos diferentes de menu. Este menu é uma barra de ferramentas em uma janela de ferramentas, definida por seu type atributo. As guid configurações e id compõem a ID totalmente qualificada da barra de ferramentas. Normalmente, o <Parent> de um menu é o grupo que o contém. No entanto, uma barra de ferramentas é definida como seu próprio pai. Portanto, o mesmo identificador é usado para os <Menu> elementos and <Parent> . O priority atributo é apenas '0'.

  4. As barras de ferramentas se assemelham a menus de várias maneiras. Por exemplo, assim como um menu pode ter grupos de comandos, as barras de ferramentas também podem ter grupos. (Nos menus, os grupos de comandos são separados por linhas horizontais. Nas barras de ferramentas, os grupos não são separados por divisores visuais.)

    Adicione uma <Groups> seção que contenha um <Group> elemento. Isso define o grupo cujo ID você declarou na <Symbols> seção. Adicione a <Groups> seção logo após a <Menus> seção.

    <Groups>
        <Group guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID" priority="0x0000">
            <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" />
        </Group>
    </Groups>
    

    Ao definir o GUID e a ID pai como o GUID e a ID da barra de ferramentas, você adiciona o grupo à barra de ferramentas.

Adicionar um comando à barra de ferramentas

Adicione um comando à barra de ferramentas, que é exibido como um botão.

  1. <Symbols> Na seção, declare os seguintes elementos IDSymbol logo após as declarações da barra de ferramentas e do grupo de barras de ferramentas.

    <IDSymbol name="cmdidWindowsMedia" value="0x0100" />
    <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
    
  2. Adicione um elemento Button dentro da <Buttons> seção. Este elemento aparecerá na barra de ferramentas na janela de ferramentas, com um ícone de Pesquisa (lupa).

    <Button guid="guidFirstToolWindowPackageCmdSet" id="cmdidWindowsMediaOpen" priority="0x0101" type="Button">
        <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID"/>
        <Icon guid="guidImages" id="bmpPicSearch" />
        <Strings>
            <CommandName>cmdidWindowsMediaOpen</CommandName>
            <ButtonText>Load File</ButtonText>
        </Strings>
    </Button>
    
  3. Abra FirstToolWindowCommand.cs e adicione as seguintes linhas na classe logo após os campos existentes.

    public const string guidFirstToolWindowPackageCmdSet = "00000000-0000-0000-0000-0000";  // get the GUID from the .vsct file
    public const uint cmdidWindowsMedia = 0x100;
    public const int cmdidWindowsMediaOpen = 0x132;
    public const int ToolbarID = 0x1000;
    

    Isso torna seus comandos disponíveis no código.

Adicionar uma propriedade MediaPlayer a FirstToolWindowControl

Nos manipuladores de eventos dos controles da barra de ferramentas, seu código deve ser capaz de acessar o controle Media Player, que é filho da classe FirstToolWindowControl.

No Gerenciador de Soluções, clique com o botão direito do mouse em FirstToolWindowControl.xaml, clique em Exibir Código e adicione o código a seguir à classe FirstToolWindowControl.

public System.Windows.Controls.MediaElement MediaPlayer
{
    get { return mediaElement1; }
}

Instanciar a janela de ferramentas e a barra de ferramentas

Adicione uma barra de ferramentas e um comando de menu que chame a caixa de diálogo Abrir arquivo e reproduza o arquivo de mídia selecionado.

  1. Abra FirstToolWindow.cs e adicione as seguintes using diretivas:

    using System.ComponentModel.Design;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.Shell.Interop;
    
  2. Dentro da classe FirstToolWindow, adicione uma referência pública ao controle FirstToolWindowControl.

    public FirstToolWindowControl control;
    
  3. No final do construtor, defina essa variável de controle como o controle recém-criado.

    control = new FirstToolWindowControl();
    base.Content = control;
    
  4. Instancie a barra de ferramentas dentro do construtor.

    this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.ToolbarID);
    this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    
  5. Neste ponto, o construtor FirstToolWindow deve ter esta aparência:

    public FirstToolWindow() : base(null)
    {
        this.Caption = "FirstToolWindow";
        this.BitmapResourceID = 301;
        this.BitmapIndex = 1;
        control = new FirstToolWindowControl();
        base.Content = control;
        this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
            FirstToolWindowCommand.ToolbarID);
            this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    }
    
  6. Adicione o comando de menu à barra de ferramentas. Na classe FirstToolWindowCommand.cs, adicione a seguinte diretiva using:

    using System.Windows.Forms;
    
  7. Na classe FirstToolWindowCommand, adicione o código a seguir no final do método ShowToolWindow(). O comando ButtonHandler será implementado na próxima seção.

    // Create the handles for the toolbar command.
    var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
    var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.cmdidWindowsMediaOpen);
    var menuItem = new MenuCommand(new EventHandler(
        ButtonHandler), toolbarbtnCmdID);
    mcs.AddCommand(menuItem);
    

Para implementar um comando de menu na janela de ferramentas

  1. Na classe FirstToolWindowCommand, adicione um método ButtonHandler que invoca a caixa de diálogo Abrir Arquivo . Quando um arquivo é selecionado, ele reproduz o arquivo de mídia.

  2. Na classe FirstToolWindowCommand, adicione uma referência privada à janela FirstToolWindow que é criada no método FindToolWindow().

    private FirstToolWindow window;
    
  3. Altere o método ShowToolWindow() para definir a janela definida acima (para que o manipulador de comandos ButtonHandler possa acessar o controle de janela. Aqui está o método ShowToolWindow() completo.

    private void ShowToolWindow(object sender, EventArgs e)
    {
        window = (FirstToolWindow) this.package.FindToolWindow(typeof(FirstToolWindow), 0, true);
        if ((null == window) || (null == window.Frame))
        {
            throw new NotSupportedException("Cannot create tool window");
        }
    
        IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
        Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
    
        var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
        var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommandguidFirstToolWindowPackageCmdSet),
            FirstToolWindowCommand.cmdidWindowsMediaOpen);
        var menuItem = new MenuCommand(new EventHandler(
            ButtonHandler), toolbarbtnCmdID);
        mcs.AddCommand(menuItem);
    }
    
  4. Adicione o método ButtonHandler. Ele cria um OpenFileDialog para o usuário especificar o arquivo de mídia a ser reproduzido e, em seguida, reproduz o arquivo selecionado.

    private void ButtonHandler(object sender, EventArgs arguments)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        DialogResult result = openFileDialog.ShowDialog();
        if (result == DialogResult.OK)
        {
            window.control.MediaPlayer.Source = new System.Uri(openFileDialog.FileName);
        }
    }
    

Defina a posição padrão para a janela de ferramentas

Em seguida, especifique um local padrão no IDE para a janela de ferramentas. As informações de configuração da janela de ferramentas estão no arquivo FirstToolWindowPackage.cs .

  1. Em FirstToolWindowPackage.cs, localize o ProvideToolWindowAttribute FirstToolWindowPackage atributo na classe, que passa o tipo FirstToolWindow para o construtor. Para especificar uma posição padrão, você deve adicionar mais parâmetros ao construtor a seguir exemplo.

    [ProvideToolWindow(typeof(FirstToolWindow),
        Style = Microsoft.VisualStudio.Shell.VsDockStyle.Tabbed,
        Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]
    

    O primeiro parâmetro nomeado é Style e seu valor é Tabbed, o que significa que a janela será uma guia em uma janela existente. A posição de encaixe é especificada pelo Window parâmetro, nesse caso, o GUID do Gerenciador de Soluções.

    Observação

    Para obter mais informações sobre os tipos de janelas no IDE, consulte vsWindowType.

Testar a janela de ferramentas

  1. Pressione F5 para abrir uma nova instância do build experimental do Visual Studio.

  2. No menu Exibir, aponte para Outras Janelas e clique em Primeira Janela de Ferramentas.

    A janela de ferramentas do reprodutor de mídia deve ser aberta na mesma posição que o Gerenciador de Soluções. Se ainda aparecer na mesma posição de antes, redefina o layout da janela (Janela / Redefinir layout da janela).

  3. Clique no botão (ele tem o ícone Pesquisar ) na janela de ferramentas. Selecione um arquivo de som ou vídeo compatível, por exemplo, C:\windows\media\chimes.wav e pressione Abrir.

    Você deve ouvir o som da campainha.