2011-05-03 60 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