Estendere la barra di stato

È possibile usare la barra di stato di Visual Studio nella parte inferiore dell'IDE per visualizzare le informazioni.

Quando si estende la barra di stato, è possibile visualizzare informazioni e interfaccia utente in quattro aree: l'area di feedback, la barra di stato, l'area di animazione e l'area della finestra di progettazione. L'area di feedback consente di visualizzare testo ed evidenziare il testo visualizzato. L'indicatore di stato mostra lo stato di avanzamento incrementale per operazioni con esecuzione breve, ad esempio il salvataggio di un file. L'area di animazione visualizza un'animazione a ciclo continuo per operazioni a esecuzione prolungata o operazioni di lunghezza non determinata, ad esempio la compilazione di più progetti in una soluzione. E l'area della finestra di progettazione mostra il numero di riga e di colonna della posizione del cursore.

È possibile ottenere la barra di stato usando l'interfaccia IVsStatusbar (dal SVsStatusbar servizio). Inoltre, qualsiasi oggetto presente in un frame di finestra può essere registrato come oggetto client della barra di stato implementando l'interfaccia IVsStatusbarUser . Ogni volta che viene attivata una finestra, Visual Studio esegue una query sull'oggetto presente in tale finestra per l'interfaccia IVsStatusbarUser . Se trovato, chiama il SetInfo metodo sull'interfaccia restituita e l'oggetto può aggiornare la barra di stato dall'interno di tale metodo. Le finestre dei documenti, ad esempio, possono usare il SetInfo metodo per aggiornare le informazioni nell'area di progettazione quando diventano attive.

Le procedure seguenti presuppongono che si comprenda come creare un progetto VSIX e aggiungere un comando di menu personalizzato. Per informazioni, vedere Creare un'estensione con un comando di menu.

Modificare la barra di stato

Questa procedura illustra come impostare e ottenere testo, visualizzare testo statico ed evidenziare il testo visualizzato nell'area di feedback della barra di stato.

Leggere e scrivere nella barra di stato

  1. Creare un progetto VSIX denominato TestStatusBarExtension e aggiungere un comando di menu denominato TestStatusBarCommand.

  2. In TestStatusBarCommand.cs sostituire il codice del metodo del gestore comandi (MenuItemCallback) con quanto segue:

    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. Compilare il codice e avviare il debug.

  4. Aprire il menu Strumenti nell'istanza sperimentale di Visual Studio. Fare clic sul pulsante Invoke TestStatusBarCommand .Click the Invoke TestStatusBarCommand button.

    Si noterà che il testo nella barra di stato ora legge Appena scritto nella barra di stato. E la finestra di messaggio visualizzata ha lo stesso testo.

Aggiornare l'indicatore di stato

  1. In questa procedura verrà illustrato come inizializzare e aggiornare l'indicatore di stato.

  2. Aprire il file TestStatusBarCommand.cs e sostituire il MenuItemCallback metodo con il codice seguente:

    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);
    }
    
  3. Compilare il codice e avviare il debug.

  4. Aprire il menu Strumenti nell'istanza sperimentale di Visual Studio. Fare clic sul pulsante Invoke TestStatusBarCommand (Richiama TestStatusBarCommand ).

    Si noterà che il testo nella barra di stato ora legge Scrittura sulla barra di stato. Verrà visualizzata anche l'indicatore di stato aggiornato ogni secondo per 20 secondi. Dopo che la barra di stato e l'indicatore di stato vengono cancellati.

Visualizzare un'animazione

  1. La barra di stato visualizza un'animazione a ciclo che indica un'operazione a esecuzione prolungata, ad esempio la compilazione di più progetti in una soluzione. Se questa animazione non viene visualizzata, assicurarsi di avere le impostazioni corrette delle opzioni degli strumenti>:

    Passare alla scheda Strumenti>Opzioni>generali e deselezionare Regola automaticamente l'esperienza visiva in base alle prestazioni del client. Selezionare quindi l'opzione secondaria Abilita esperienza visiva client avanzata. Ora dovrebbe essere possibile visualizzare l'animazione quando si compila il progetto nell'istanza sperimentale di Visual Studio.

    In questa procedura viene visualizzata l'animazione standard di Visual Studio che rappresenta la compilazione di un progetto o di una soluzione.

  2. Aprire il file TestStatusBarCommand.cs e sostituire il MenuItemCallback metodo con il codice seguente:

    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. Compilare il codice e avviare il debug.

  4. Aprire il menu Strumenti nell'istanza sperimentale di Visual Studio e fare clic su Richiama TestStatusBarCommand.

    Quando viene visualizzata la finestra di messaggio, verrà visualizzata anche l'animazione nella barra di stato all'estrema destra. Quando si ignora la finestra di messaggio, l'animazione scompare.