2011-05-03 80 views
0

我試圖在單擊按鈕上單獨顯示窗口上的進度條。 我不想使用調度程序,調用函數,因爲我不希望用戶做任何事情,直到它完成。WPF進度條更新無需調度程序

所以在按鈕上點擊即時通信調用一個內部使用委託的函數來調用帶有更新的函數。

void button click() 
{ 
    classA.function(list); 
} 

內部的CLASSA

void function(list) 
{ 
foreach(list) 
    calling the delegate function(ShowtProgress) to update the progress bar with current and max properties. 
} 

所以我委託函數看起來是這樣的:

private void ShowtProgress(ProgressReport importProgressReport) 
{ 
      importProgressBar.UpdateProgressBar(importProgressReport.OverallProgress.TotalItems,importProgressReport.OverallProgress.ItemsProcessed); 
      importProgressBar.ShowDialog(); 
} 

正如你可以看到,即時通訊有多少目前正在處理和總項目傳遞給進度條updateProgressbar函數更新進度條。

我已經定義了進度條的最小值爲0。

但問題是,它顯示(進度條)ShowDialog的那一刻時分= 0,假設最大= 1。它停留在那裏等待第一次供用戶輸入。在我不關閉對話框之前,處理不會進一步進行,當再次調用此函數時,模式不會彈出或不會用最新值更新。

請讓我知道,如果我錯過了任何東西。

+3

由於ShowDialog()調用,它正在等待用戶輸入,使用正常的Show()(如果importProgressBar不可見),或者只是刪除已存在的行。 – 2011-05-03 18:17:24

+0

您應該已經正確地學習了[如何格式化](http://stackoverflow.com/editing-help)您的問題... – 2011-05-03 18:23:54

+0

@ H.B.:我會在下次記住這一點。 Thnx指出 – alice7 2011-05-03 18:27:34

回答

1

由於ShowDialog()呼叫,它正在等待用戶輸入。使用正常的Show()(如果importProgressBar不可見),或者只是刪除已存在的行。

+0

由於Roy似乎回答了這個問題,我已經將其複製爲一個正確的答案。 – svick 2011-05-03 21:42:29