wpf 進度條


------------------進度條問題---------
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainWindow_Loaded);
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{ //BackgroundWorker,在單獨的線程上執行操作
BackgroundWorker worker = new BackgroundWorker();

//BW.DoWork,調用BW.RunWorkerAsync()時發生

//初始化命名委托;Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊;
worker.DoWork += (s,ev) =>
{
for (int i = 0; i < 100; i += 10)
{
Thread.Sleep(1000);

//BW.ReportProgress,引發BW.ProgressChanged事件
((BackgroundWorker)s).ReportProgress(i);
}
};
//調用BW.ReportProgress時發生
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);

//當后台操作已完成,被取消或引發異常時發生
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);

//BackgroundWorker.WorkerReportsProgress 獲取或設置一個值,該值指示 BackgroundWorker 能否報告進度更新。
worker.WorkerReportsProgress = true;

//TaskbarItemInfo獲取或設置 System.Windows.Window 的任務欄縮略圖。
//TaskbarItemInfo.ProgressState 獲取或設置一個值,該值指示在任務欄按鈕中顯示進度指示器的方式。

//TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Indeterminate;

//TaskbarItemProgressState枚舉值
//None=0,Indeterminate=1(閃爍綠色),Normal=2(綠色),Error=3(紅色),Paused=4(黃色)
//開始執行后台操作
worker.RunWorkerAsync();

}


void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//ProgressChangedEventArgs.ProgressPercentage 獲取異步任務的進度百分比
ProgressBar.Value = e.ProgressPercentage;

// double TaskbarItemInfo.ProgressValue獲取或設置一個值,該值指示任務欄按鈕中進度指示器的填滿狀態。
//TaskbarItemInfo.ProgressValue = (double)e.ProgressPercentage / 100;
}

void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
ProgressBar.Value = 100;
MessageBox.Show("操作完成");
//TaskbarItemInfo.ProgressValue = 1.0;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM