標籤:工作列
Windows 7 工作列為我們增添了許多其他功能:Jump Lists,Window Preview,Progress Bar,Overlay Icon 等等。
新工作列的功能使我們的操作更加方便快捷,微軟提供了方便的工具Windows API Code Pack for .NET Framework 來協助我們完成這些開發,程式中增加Microsoft.WindowsAPICodePack.dll 和Microsoft.WindowsAPICodePack.Shell.dll。
在使用IE 下載檔案時,工作列表徵圖會同步顯示當前下載進度(如)。那麼在應用程式中如何?這個效果呢?
TaskbarManager.SetProgressValue 方法
在TaskbarManager 類中有三種不同方式使用SetProgressValue 方法來設定進度條當前位置,其中currentValue 為進度條當前位置的參數,maximumValue 為最大參數:
//設定當前視窗public void SetProgressValue(int currentValue, int maximumValue){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressValue(OwnerHandle, Convert.ToUInt32(currentValue), Convert.ToUInt32(maximumValue));}//設定指定視窗public void SetProgressValue(int currentValue, int maximumValue, IntPtr windowHandle){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressValue(windowHandle, Convert.ToUInt32(currentValue), Convert.ToUInt32(maximumValue));}//設定指定WPF視窗public void SetProgressValue(int currentValue, int maximumValue, System.Windows.Window window){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressValue( (new WindowInteropHelper(window)).Handle, Convert.ToUInt32(currentValue), Convert.ToUInt32(maximumValue));}
TaskbarProgressBarState 進度條狀態
除了常見的綠色(Normal 正常狀態)外,還可以通過調用枚舉TaskbarProgressBarState 使用其他幾種狀態,請參看下錶:
名稱 |
描述 |
NoProgress |
不顯示進度條 |
Indeterminate |
不定值進度條(處於滾動狀態) |
Normal |
正常狀態(綠色) |
Error |
錯誤狀態(紅色) |
Paused |
暫停狀態(黃色) |
TaskbarManager.SetProgressState 方法
如何為進度條設定以上狀態呢?當然TaskbarManager 也同樣提供了三種不同的方式使用SetProgressState 方法,對進度條狀態進行相應的設定:
//設定當前視窗狀態public void SetProgressState(TaskbarProgressBarState state){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressState(OwnerHandle, (TBPFLAG)state);}//設定指定視窗狀態public void SetProgressState(TaskbarProgressBarState state, IntPtr windowHandle){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressState(windowHandle, (TBPFLAG)state);}//設定指定WPF視窗狀態public void SetProgressState(TaskbarProgressBarState state, System.Windows.Window window){ CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetProgressState( (new WindowInteropHelper(window)).Handle, (TBPFLAG)state);}
效果示範
下面只需要在程式中使用以上方法便可實現對進度條的控制,下面代碼通過Slider 調節進度條當前數值:
/// <summary>/// 初始化進度條狀態/// </summary>private void InitProgressStates(){ _progressBarStatus.Items.Add(TaskbarProgressBarState.NoProgress); _progressBarStatus.Items.Add(TaskbarProgressBarState.Indeterminate); _progressBarStatus.Items.Add(TaskbarProgressBarState.Normal); _progressBarStatus.Items.Add(TaskbarProgressBarState.Error); _progressBarStatus.Items.Add(TaskbarProgressBarState.Paused); _progressBarStatus.SelectedIndex = 2;}/// <summary>/// 進度條值改變時,改變TaskBar的進度和狀態/// </summary>private void _progressSlider_ValueChanged(object sender, EventArgs e){ TaskbarManager.Instance.SetProgressValue(_progressSlider.Value, _progressSlider.Maximum); TaskbarManager.Instance.SetProgressState((TaskbarProgressBarState)_progressBarStatus.SelectedItem);}
正常狀態 錯誤狀態 暫停狀態
C# Windows 7工作列開發之進度條(Progress Bar)