2013-01-12 123 views
0

我想用C#(Net 3.5)將進度條添加到Windows 7中的任務欄圖標。我使用Windows API代碼包來實現這一目標:任務欄進度條在隱藏窗口後不顯示

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

關閉和進度條不工作。

如何再次顯示progressBar?

+0

您是否嘗試過將代碼用於設置進度條的進度狀態,該代碼在從托盤中恢復後顯示窗口的代碼部分中? (即在第三個代碼後插入第一個代碼塊) –

+0

該代碼每秒由計時器運行。其他代碼僅在窗口大小發生變化時纔有效 –

回答

1

Appbarntly TaskbarManager有「this.ShowInTaskbar = false;」的問題線。我只是刪除它,因爲隱藏窗口也隱藏了任務欄。但是,我需要保持「this.ShowInTaskbar = true;」。我只是假設它是一個錯誤。