0

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();

プログレスバーのオンとオフを切り替えても機能しません。

プログレスバーを再度表示するにはどうすればよいですか?

4

1 に答える 1

1

明らかに、TaskbarManagerには「this.ShowInTaskbar=false;」に関する問題があります。ライン。ウィンドウを非表示にするとタスクバーも非表示になるため、削除しました。ただし、「this.ShowInTaskbar=true;」を維持する必要があります。バグだと思います。

于 2013-01-12T21:58:52.190 に答える