C# Windows 7工作列開發之進度條(Progress Bar)

來源:互聯網
上載者:User

標籤:工作列

      Windows 7 工作列為我們增添了許多其他功能:Jump Lists,Window Preview,Progress Bar,Overlay Icon 等等。

      新工作列的功能使我們的操作更加方便快捷,微軟提供了方便的工具Windows API Code Pack for .NET Framework 來協助我們完成這些開發,程式中增加Microsoft.WindowsAPICodePack.dllMicrosoft.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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.