Поделиться через


Расширение строки состояния

Для отображения сведений можно использовать строку состояния Visual Studio в нижней части интегрированной среды разработки.

При расширении строки состояния можно отобразить сведения и пользовательский интерфейс в четырех регионах: область отзывов, индикатор хода выполнения, область анимации и область конструктора. Область отзывов позволяет отображать текст и выделять отображаемый текст. На панели выполнения отображается добавочный ход выполнения для коротких операций, таких как сохранение файла. Область анимации отображает непрерывно циклизованную анимацию для длительных операций или операций с неопределенной длиной, например создание нескольких проектов в решении. А в области конструктора отображается номер строки и столбца расположения курсора.

Строку состояния можно получить с помощью IVsStatusbar интерфейса (из SVsStatusbar службы). Кроме того, любой объект, размещенный в кадре окна, может зарегистрировать в качестве клиентского объекта строки состояния, реализуя IVsStatusbarUser интерфейс. При активации окна Visual Studio запрашивает объект, размещенный в этом окне для IVsStatusbarUser интерфейса. При обнаружении метод вызывает SetInfo метод в возвращаемом интерфейсе, а объект может обновить строку состояния из этого метода. Например, окна документов могут использовать SetInfo метод для обновления сведений в регионе конструктора при их активности.

В следующих процедурах предполагается, что вы понимаете, как создать проект VSIX и добавить настраиваемую команду меню. Дополнительные сведения см. в разделе "Создание расширения" с помощью команды меню.

Изменение строки состояния

В этой процедуре показано, как задать и получить текст, отобразить статический текст и выделить отображаемый текст в области отзывов строки состояния.

Чтение и запись в строку состояния

  1. Создайте проект VSIX с именем TestStatusBarExtension и добавьте команду меню с именем TestStatusBarCommand.

  2. В TestStatusBarCommand.cs замените код метода обработчика команд следующимMenuItemCallback образом:

    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. Скомпилируйте код и запустите отладку.

  4. Откройте меню "Сервис" в экспериментальном экземпляре Visual Studio. Нажмите кнопку Invoke TestStatusBarCommand .

    Вы должны увидеть, что текст в строке состояния теперь считывает только что написанную в строке состояния. В появившемся поле сообщения есть тот же текст.

Обновление индикатора выполнения

  1. В этой процедуре мы покажем, как инициализировать и обновить индикатор выполнения.

  2. Откройте файл TestStatusBarCommand.cs и замените MenuItemCallback метод следующим кодом:

    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. Скомпилируйте код и запустите отладку.

  4. Откройте меню "Сервис" в экспериментальном экземпляре Visual Studio. Нажмите кнопку Invoke TestStatusBarCommand .

    Вы увидите, что текст в строке состояния теперь считывает запись в строку хода выполнения. Вы также увидите, что индикатор хода выполнения обновляется каждые секунды в течение 20 секунд. После этого будет снята строка состояния и индикатор выполнения.

Отображение анимации

  1. В строке состояния отображается анимация циклического цикла, указывающая либо длительную операцию (например, создание нескольких проектов в решении). Если эта анимация не отображается, убедитесь, что у вас есть правильные параметры параметров инструментов>:

    Перейдите на вкладку "Общие параметры>инструментов>" и un проверка Автоматически настраивайте визуальный интерфейс на основе производительности клиента. Затем проверка вложенный параметр Включить расширенный визуальный интерфейс клиента. Теперь вы сможете увидеть анимацию при сборке проекта в экспериментальном экземпляре Visual Studio.

    В этой процедуре мы отображаем стандартную анимацию Visual Studio, представляющую создание проекта или решения.

  2. Откройте файл TestStatusBarCommand.cs и замените MenuItemCallback метод следующим кодом:

    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. Скомпилируйте код и запустите отладку.

  4. Откройте меню "Сервис" в экспериментальном экземпляре Visual Studio и нажмите кнопку Invoke TestStatusBarCommand.

    При отображении поля сообщения также должна появиться анимация в строке состояния справа. При закрытии поля сообщения анимация исчезает.