2014-04-07 61 views
0

我想在我的WPF應用程序中實現2個進度條。一個(ProgressbarDocument)應顯示每個選定文檔的進度,另一個(ProgressbarProcess)應顯示整個過程的進度,包括處理每個選定的文檔。 我的問題是,如果進度條的動畫值爲100,但ProgressbarDocument的動畫未重置並重新啓動,則動畫將停止。 我該怎麼做?C#:爲什麼我的ProgressBar不會運行多次?

double summand = (1/anzahl); 

Duration durationdocument = new Duration(TimeSpan.FromSeconds(1)); 
Duration durationprocess = new Duration(TimeSpan.FromSeconds(anzahl)); 

DoubleAnimation doubleanimationdocument = new DoubleAnimation(ProgressbarDocument.Value, durationprocess); 
DoubleAnimation doubleanimationprocess = new DoubleAnimation(ProgressbarProcess.Value, durationprocess); 

for (int j = 0; j <= anzahl; j++) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     ProgressbarDocument.Value++; 
     ProgressbarProcess.Value= summand + ProgressbarProcess.Value; 

     doubleanimationdocument = new DoubleAnimation(ProgressbarDocument.Value, durationdocument); 
     doubleanimationprocess = new DoubleAnimation(ProgressbarProcess.Value, durationprocess); 
     ProgressbarDocument.BeginAnimation(ProgressBar.ValueProperty, doubleanimationdocument); 
     ProgressbarProcess.BeginAnimation(ProgressBar.ValueProperty, doubleanimationprocess); 
    } 
    if(ProgressbarDocument.Value==100) 
    { 
     ProgressbarDocument.Value = 0; 
     ProgressbarDocument.BeginAnimation(ProgressBar.ValueProperty, doubleanimationdocument); 
    } 
} 
+0

,你應該有你試圖通過使用調試器單步執行代碼,看看使用> =,而不是== – Sayse

+1

是否'ProgressbarDocument.Value = 0;'被調用? –

+0

只需將您的ProgressbarDocument設置爲100的模數即可。 –

回答

0

你內心的循環for (int i = 0; i < 100; i++)將退出後,我是99.我== 100不會被調用,從而if語句if(ProgressbarDocument.Value==100)永遠不匹配你的。

我想你想你的for循環,直到100運行:

for (int i = 0; i <= 100; i++) 
+0

這是有道理的,但它也行不通。 – lene95

+0

也許你不應該在這裏使用這些雙動畫。您正在設置太多動畫(每個小步驟) - 您應該爲整個進程使用一個動畫。 – ElGauchooo

+0

,我該怎麼做? – lene95

相關問題