Я пытаюсь добавить вещи в строке состояния в 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 .