WPF中ProgressBar的使用


第一次在WPF中使用進度條,界面是用的xml。運用BackgroundWorker實現進度條變化。

通過前台輸入數據,在界面內畫正方形。

代碼如下:

 1  private static BackgroundWorker backgroundWorker;
 2  
 3  //窗體加載時進行的工作。
 4  
 5  private void Window_Loaded(object sender, RoutedEventArgs e)
 6  {
 7  backgroundWorker = new BackgroundWorker();
 8  backgroundWorker.WorkerReportsProgress = true;
 9  backgroundWorker.WorkerSupportsCancellation = true;   //支持異步取消操作
10  backgroundWorker.DoWork += backgroundWorker_DoWork;     //發生時BachgroundWorker.RunWorkerAsync()調用
11  backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
12  backgroundWorker.RunWorkerCompleted += backgroundWorkerDownloader_RunWorkerCompleted;
13  }
14  
15  //后台操作任務,無法獲取前台數據。不在一個線程
16  void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
17  {
18  for (int i = 0; i < ((int)e.Argument); i++)
19  {
20  backgroundWorker.ReportProgress(i);
21  
22  //數據傳輸之間暫停的時間,10ms,數據傳輸過快而圖形沒有畫完可能會造成進度條不顯示
23  Thread.Sleep(10); 
24  //(sender as BackgroundWorker).ReportProgress(i);
25  }
26  }
27  
28  public static double lng = 110.00, lat = -35.00;//經度,緯度
29  double a = 0.01;
30  
31  //需要前台數據的操作寫在ProgressChanged中
32  
33  void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
34  {
35  DrawNumber.Content = e.ProgressPercentage;
36  DrawProgressBar.Value = e.ProgressPercentage;
37  
38  //在界面內畫正方形
39  
40  DrawZFX(e);
41  
42  }
43  
44  private void DrawZFX(ProgressChangedEventArgs e)
45  
46  {
47  var i = e.ProgressPercentage;
48  lat = Math.Round((lat - a), 2);
49  TBLngValue.Text = (lng + a * i).ToString();
50  TBLatValue.Text = (lat + a * i).ToString();
51  AppendGeometryPoint(true);  //在界面內添加起始點
52  
53  TBLngValue.Text = ((lng + a * i) + a).ToString();
54  TBLatValue.Text = (lat + a * i).ToString();
55  AppendGeometryPoint(false); 
56  
57  TBLngValue.Text = ((lng + a * i) + a).ToString();
58  TBLatValue.Text = ((lat + a * i) + a).ToString();
59  AppendGeometryPoint(false);
60  
61  TBLngValue.Text = (lng + a * i).ToString();
62  TBLatValue.Text = ((lat + a * i) + a).ToString();
63  AppendGeometryPoint(false);
64  }
65  
66  void backgroundWorkerDownloader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
67  {
68     DrawProgressBar.Visibility = Visibility.Hidden;
69  }

 


免責聲明!

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



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