Индикатор выполнения панели задач не отображается после того, как окно было скрыто

Я пытаюсь добавить индикатор выполнения к значку панели задач в Windows 7 с C# (Net 3.5). Я использую 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();

Выключение и включение индикатора выполнения не работает.

Как я могу снова показать прогрессбар?

1 ответ

Очевидно, что TaskbarManager имеет проблемы с "this.ShowInTaskbar = false;" линия. Я просто удалил его, так как скрытие окна тоже скрывает панель задач. Тем не менее, мне нужно оставить "this.ShowInTaskbar = true;". Я просто предполагаю, что это ошибка.

Другие вопросы по тегам