Partilhar via


Estender a barra de status

Você pode usar a barra de status do Visual Studio na parte inferior do IDE para exibir informações.

Ao estender a barra de status, você pode exibir informações e a interface do usuário em quatro regiões: a região de feedback, a barra de progresso, a região de animação e a região do designer. A região de comentários permite que você exiba texto e realce o texto exibido. A barra de progresso mostra o progresso incremental para operações de execução curta, como salvar um arquivo. A região de animação exibe uma animação em loop contínuo para operações de longa duração ou operação de duração indeterminada, como a criação de vários projetos em uma solução. E a região do designer mostra o número da linha e da coluna da posição do cursor.

Você pode obter a barra de status usando a IVsStatusbar interface (do SVsStatusbar serviço). Além disso, qualquer objeto localizado em um quadro de janela pode se registrar como um objeto cliente da barra de status implementando a IVsStatusbarUser interface. Sempre que uma janela é ativada, o Visual Studio consulta o objeto localizado nessa janela para a IVsStatusbarUser interface. Se encontrado, ele chama o SetInfo método na interface retornada e o objeto pode atualizar a barra de status de dentro desse método. As janelas de documentos, por exemplo, podem usar o SetInfo método para atualizar informações na região do designer quando se tornam ativas.

Os procedimentos a seguir pressupõem que você entenda como criar um projeto VSIX e adicionar um comando de menu personalizado. Para obter informações, consulte Criar uma extensão com um comando de menu.

Modificar a barra de estado

Este procedimento mostra como definir e obter texto, exibir texto estático e realçar o texto exibido na região de comentários da barra de status.

Ler e escrever na barra de estado

  1. Crie um projeto VSIX chamado TestStatusBarExtension e adicione um comando de menu chamado TestStatusBarCommand.

  2. No TestStatusBarCommand.cs, substitua o código do método do manipulador de comandos (MenuItemCallback) pelo seguinte:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
    
        // Make sure the status bar is not frozen
        int frozen;
    
        statusBar.IsFrozen(out frozen);
    
        if (frozen != 0)
        {
            statusBar.FreezeOutput(0);
        }
    
        // Set the status bar text and make its display static.
        statusBar.SetText("We just wrote to the status bar.");
    
        // Freeze the status bar.
        statusBar.FreezeOutput(1);
    
        // Get the status bar text.
        string text;
        statusBar.GetText(out text);
        System.Windows.Forms.MessageBox.Show(text);
    
        // Clear the status bar text.
        statusBar.FreezeOutput(0);
        statusBar.Clear();
    }
    
  3. Compile o código e inicie a depuração.

  4. Abra o menu Ferramentas na instância experimental do Visual Studio. Selecione o botão Invocar TestStatusBarCommand .

    O texto na barra de estado agora mostra Acabámos de escrever na barra de estado. e a caixa de mensagem que aparece usa o mesmo texto.

Atualizar a barra de progresso

O procedimento seguinte mostra como inicializar e atualizar a barra de progresso.

  1. Abra o arquivo TestStatusBarCommand.cs e substitua o MenuItemCallback método com o seguinte código:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
        uint cookie = 0;
        string label = "Writing to the progress bar";
    
        // Initialize the progress bar.
        statusBar.Progress(ref cookie, 1, "", 0, 0);
    
        for (uint i = 0, total = 20; i <= total; i++)
        {
            // Display progress every second.
            statusBar.Progress(ref cookie, 1, label, i, total);
            System.Threading.Thread.Sleep(1000);
        }
    
        // Clear the progress bar.
        statusBar.Progress(ref cookie, 0, "", 0, 0);
    }
    
  2. Compile o código e inicie a depuração.

  3. Abra o menu Ferramentas na instância experimental do Visual Studio. Selecione o botão Invocar TestStatusBarCommand.

    O texto na barra de estado agora mostra Escrita na barra de progresso. A barra de progresso atualiza-se a cada segundo durante 20 segundos, e as barras de estado e progresso são apagadas.

Exibir uma animação

  1. A barra de estado exibe uma animação repetitiva que indica uma operação de longa duração (por exemplo, a compilação de vários projetos numa solução). Se não vires esta animação, certifica-te de que tens as definições corretasde Opções de >:

    1. Abra o painel Ferramentas>Opções e expanda a secção Todas as Definições>Ambiente>Experiência Visual>Efeitos.

    2. Em Ativar experiência visual rica do cliente, selecione Automático (Ativar apenas quando recomendado).

    1. Abra a caixade diálogo Opções de > e expanda a seçãoGeral do >.

    2. Desmarque a caixa de seleção Ajustar automaticamente a experiência visual com base no desempenho do cliente.

    3. Selecione a caixa de seleção da subopção Ativar experiência visual rica do cliente.

    4. Selecione OK.

    A animação agora é exibida quando constróis o projeto na tua instância experimental do Visual Studio.

    Este procedimento mostra como mostrar a animação padrão do Visual Studio, que representa a construção de um projeto ou solução.

  2. Abra o arquivo TestStatusBarCommand.cs e substitua o MenuItemCallback método com o seguinte código:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar =(IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
    
        // Use the standard Visual Studio icon for building.
        object icon = (short)Microsoft.VisualStudio.Shell.Interop.Constants.SBAI_Build;
    
        // Display the icon in the Animation region.
        statusBar.Animation(1, ref icon);
    
        // The message box pauses execution for you to look at the animation.
        System.Windows.Forms.MessageBox.Show("showing?");
    
        // Stop the animation.
        statusBar.Animation(0, ref icon);
    }
    
  3. Compile o código e inicie a depuração.

  4. Abra o menu Ferramentas na instância experimental do Visual Studio e selecione o botão Invocar TestStatusBarCommand .

    Quando vir a caixa de mensagem, também deverá ver a animação na barra de estado na extremidade direita. Quando você descarta a caixa de mensagem, a animação desaparece.