Compartir a través de


Extender la barra de estado

Puede usar la barra de estado de Visual Studio en la parte inferior del IDE para mostrar información.

Al ampliar la barra de estado, puede mostrar información y la interfaz de usuario en cuatro regiones: la región de comentarios, la barra de progreso, la región de animación y la región del diseñador. La región de comentarios permite mostrar texto y resaltar el texto mostrado. La barra de progreso muestra el progreso incremental para las operaciones de ejecución corta, como guardar un archivo. La región de animación muestra una animación en bucle continua para operaciones de larga duración o operación de longitud no determinada, como la creación de varios proyectos en una solución. Y la región del diseñador muestra el número de línea y columna de la ubicación del cursor.

Puede obtener la barra de estado mediante la IVsStatusbar interfaz (desde el SVsStatusbar servicio). Además, cualquier objeto que se encuentra en un marco de ventana puede registrarse como un objeto cliente de barra de estado mediante la implementación de la IVsStatusbarUser interfaz . Cada vez que se activa una ventana, Visual Studio consulta el objeto que se encuentra en esa ventana para la IVsStatusbarUser interfaz. Si se encuentra, llama al SetInfo método en la interfaz devuelta y el objeto puede actualizar la barra de estado desde dentro de ese método. Las ventanas de documento, por ejemplo, pueden usar el SetInfo método para actualizar la información en la región del diseñador cuando se activan.

En los procedimientos siguientes se supone que comprende cómo crear un proyecto VSIX y agregar un comando de menú personalizado. Para obtener información, vea Crear una extensión con un comando de menú.

Modificación de la barra de estado

Este procedimiento muestra cómo establecer y obtener texto, mostrar texto estático y resaltar el texto mostrado en la región de comentarios de la barra de estado.

Lectura y escritura en la barra de estado

  1. Cree un proyecto VSIX denominado TestStatusBarExtension y agregue un comando de menú denominado TestStatusBarCommand.

  2. En TestStatusBarCommand.cs, reemplace el código del método de controlador de comandos (MenuItemCallback) por lo siguiente:

    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 el código e inicie la depuración.

  4. Abra el menú Herramientas en la instancia experimental de Visual Studio. Haga clic en el botón Invocar TestStatusBarCommand .

    Debería ver que el texto de la barra de estado ahora lee We just escribimos en la barra de estado. y el cuadro de mensaje que aparece tiene el mismo texto.

Actualización de la barra de progreso

  1. En este procedimiento se muestra cómo inicializar y actualizar la barra de progreso.

  2. Abra el archivo TestStatusBarCommand.cs y reemplace el MenuItemCallback método por el código siguiente:

    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. Compile el código e inicie la depuración.

  4. Abra el menú Herramientas en la instancia experimental de Visual Studio. Haga clic en el botón Invocar TestStatusBarCommand .

    Debería ver que el texto de la barra de estado ahora lee Escritura en la barra de progreso. También debería ver que la barra de progreso se actualiza cada segundo durante 20 segundos. Después de que se borre la barra de estado y la barra de progreso.

Mostrar una animación

  1. La barra de estado muestra una animación de bucle que indica una operación de ejecución prolongada (por ejemplo, compilar varios proyectos en una solución). Si no ve esta animación, asegúrese de que tiene la configuración de Opciones de herramientas> correcta:

    Vaya a la pestaña Opciones>de herramientas>General y desactive Ajustar automáticamente la experiencia visual en función del rendimiento del cliente. A continuación, active la subconsulta Habilitar experiencia visual de cliente enriquecida. Ahora debería poder ver la animación al compilar el proyecto en la instancia experimental de Visual Studio.

    En este procedimiento se muestra la animación estándar de Visual Studio que representa la creación de un proyecto o solución.

  2. Abra el archivo TestStatusBarCommand.cs y reemplace el MenuItemCallback método por el código siguiente:

    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 el código e inicie la depuración.

  4. Abra el menú Herramientas en la instancia experimental de Visual Studio y haga clic en Invocar TestStatusBarCommand.

    Cuando vea el cuadro de mensaje, también debería ver la animación en la barra de estado del extremo derecho. Al descartar el cuadro de mensaje, la animación desaparece.