В строке состояния расширения Visual Studio не отображаются значки - vsix - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь добавить вещи в строке состояния в Visual Studio Ide. Я могу добавить текст и индикатор выполнения , но не могу добавить значки в нем. Чего мне не хватает в следующем фрагменте кода? Также хотите узнать, почему это происходит?

Command1.cs -

private void Execute(object sender, EventArgs e)
{
    ThreadHelper.ThrowIfNotOnUIThread();
    string message = string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName);
    string title = "Command1";

    StatusBarService sbs = new StatusBarService();
    sbs.DisplayAndShowIcon();
    //sbs.DisplayAndShowProgress("this is text.....");

    VsShellUtilities.ShowMessageBox(
        this.package,
        message,
        title,
        OLEMSGICON.OLEMSGICON_INFO,
        OLEMSGBUTTON.OLEMSGBUTTON_OK,
        OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
}

StatusBarService.cs -

internal class StatusBarService
{
    public StatusBarService()
    {

    }

    private IVsStatusbar bar;

    private IVsStatusbar StatusBar
    {
        get
        {
            if (bar == null)
            {
                bar = Package.GetGlobalService(typeof(SVsStatusbar)) as IVsStatusbar;
            }

            return bar;
        }
    }

    //Not working
    public void DisplayAndShowIcon()
    {
        object icon = (short)Microsoft.VisualStudio.Shell.Interop.Constants.SBAI_Print;

        // 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);
    }

    //Working properly
    public void DisplayAndShowProgress(string message)
    {
        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);
    }
}

Код, указанный в Официальный документ Microsoft .

...