C# (Net 3.5) で Windows 7 のタスクバー アイコンにプログレス バーを追加しようとしています。これを実現するために、Windows API Code Pack を使用しています。
if (WindowStateInternal == FormWindowState.Normal) // the taskbar can only be set if the window is visible
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
TaskbarManager.Instance.SetProgressValue(100 - (int)PercentRemaining, 100);
}
これは正常に機能しますが、ウィンドウが最初に表示されたときだけです。トレイアイコンが存在するため、ウィンドウを最小化するオプションがあり、ウィンドウは削除されます。ウィンドウが再度表示されると、プログレスバーを再度オンにすることはできません。
ユーザーがウィンドウを最小化したときに実行されるコード:
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
this.Visible = false; // otherwise problem when windows starts up and program is in autostart
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; // Hide from Task-List (Alt+Tab)
そしてそれが正常に戻ってきたとき:
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; // Show in Task-List (Alt+Tab)
this.Visible = true;
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
this.BringWindowToFront();
プログレスバーのオンとオフを切り替えても機能しません。
プログレスバーを再度表示するにはどうすればよいですか?