日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Progress Bar Windows 7 任務(wù)欄開發(fā)之進(jìn)度條

上一篇我們完成了“覆蓋圖標(biāo)(Overlay Icon)的相關(guān)開發(fā),本篇我們將對進(jìn)度條特性進(jìn)行研究 。在使用IE 下載文件時,任務(wù)欄圖標(biāo)會同步顯示當(dāng)前下載進(jìn)度(如下圖) 。那么在應(yīng)用程序中如何實現(xiàn)這個效果呢?
【Progress Bar Windows 7 任務(wù)欄開發(fā)之進(jìn)度條】下載狀態(tài)
TaskbarManager.SetProgressValue 方法
在TaskbarManager 類中有三種不同方式使用SetProgressValue 方法來設(shè)置進(jìn)度條當(dāng)前位置,其中currentValue 為進(jìn)度條當(dāng)前位置的參數(shù),maximumValue 為最大參數(shù):
//設(shè)置當(dāng)前窗口 
public void SetProgressValue(int currentValue, int maximumValue) 
{ 
CoreHelpers.ThrowIfNotWin7(); 
TaskbarList.SetProgressValue(OwnerHandle, Convert.ToUInt32(currentValue), 
 Convert.ToUInt32(maximumValue)); 
} 
 
//設(shè)置指定窗口 
public void SetProgressValue(int currentValue, int maximumValue, 
 IntPtr windowHandle) 
{ 
CoreHelpers.ThrowIfNotWin7(); 
TaskbarList.SetProgressValue(windowHandle, Convert.ToUInt32(currentValue), 
 Convert.ToUInt32(maximumValue)); 
} 
 
//設(shè)置指定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 進(jìn)度條狀態(tài)
除了常見的綠色(Normal 正常狀態(tài))外,還可以通過調(diào)用枚舉TaskbarProgressBarState 使用其他幾種狀態(tài),請參看下表:
名稱描述NoProgress不顯示進(jìn)度條Indeterminate不定值進(jìn)度條(處于滾動狀態(tài))Normal正常狀態(tài)(綠色)Error錯誤狀態(tài)(紅色)Paused暫停狀態(tài)(黃色)
TaskbarManager.SetProgressState 方法
如何為進(jìn)度條設(shè)置以上狀態(tài)呢?當(dāng)然TaskbarManager 也同樣提供了三種不同的方式使用SetProgressState 方法,對進(jìn)度條狀態(tài)進(jìn)行相應(yīng)的設(shè)置:
//設(shè)置當(dāng)前窗口狀態(tài) 
public void SetProgressState(TaskbarProgressBarState state) 
{ 
CoreHelpers.ThrowIfNotWin7(); 
TaskbarList.SetProgressState(OwnerHandle, (TBPFLAG)state); 
} 
 
//設(shè)置指定窗口狀態(tài) 
public void SetProgressState(TaskbarProgressBarState state, IntPtr windowHandle) 
{ 
CoreHelpers.ThrowIfNotWin7(); 
TaskbarList.SetProgressState(windowHandle, (TBPFLAG)state); 
} 
 
//設(shè)置指定WPF窗口狀態(tài) 
public void SetProgressState(TaskbarProgressBarState state, 
 System.Windows.Window window) 
{ 
CoreHelpers.ThrowIfNotWin7(); 
TaskbarList.SetProgressState( 
(new WindowInteropHelper(window)).Handle, 
(TBPFLAG)state); 
}
效果演示
下面只需要在程序中使用以上方法便可實現(xiàn)對進(jìn)度條的控制,下面代碼通過Slider 調(diào)節(jié)進(jìn)度條當(dāng)前數(shù)值:
TaskbarManager.Instance.SetProgressValue((int)progressSlider.Value, 100); 
TaskbarManager.Instance.SetProgressState(
(TaskbarProgressBarState)progressBarStatus.SelectedItem);
通過調(diào)整進(jìn)度條呈現(xiàn)出三種不同的狀態(tài)效果:
正常狀態(tài)
錯誤狀態(tài)
暫停狀態(tài)
閃動效果
使用Live Messenger(LM)聊天時,如果對方發(fā)出了信息LM 圖標(biāo)會閃動提示,雖然Windows API 沒有直接控制閃動效果的方法,但該效果在開發(fā)中可能會經(jīng)常使用,下面代碼為一個閃動效果類:
internal sealed class FlashWindowHelper 
{ 
DispatcherTimer _timer; 
int _count = 0; 

推薦閱讀