【问题标题】:WPF progress bar update without dispatcher没有调度程序的 WPF 进度条更新
【发布时间】:2011-05-03 18:11:32
【问题描述】:

我试图在单击按钮时在单独的窗口中显示进度条。 我不想使用调度程序,调用函数,因为我不希望用户在它完成之前做任何其他事情。

所以在按钮单击时,我会调用一个函数,该函数在内部使用委托来调用更新的函数。

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。

但问题是当 min = 0 并假设 max = 1 时它第一次显示显示对话框(进度条)的那一刻。它就在那里等待用户输入。在我不关闭对话框之前,处理不会更进一步,并且当再次调用此函数时,模式不会弹出或不会更新为最新值。

如果我遗漏了什么,请告诉我。

【问题讨论】:

  • 由于 ShowDialog() 调用,它正在等待用户输入,请使用普通的 Show()(如果 importProgressBar 不可见),或者如果已经存在则删除该行。
  • 你应该好好学习how to format你的问题了...
  • @H.B.:下次我会记住这一点。谢谢指出
  • 嗨,罗伊,show() 成功了。 .

标签: c# wpf progress-bar


【解决方案1】:

由于ShowDialog() 调用,它正在等待用户输入。使用普通的Show()(如果importProgressBar 不可见),或者如果已经存在则删除该行。

【讨论】:

  • 由于 Roy's 似乎回答了这个问题,我将其复制为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 2019-01-08
相关资源
最近更新 更多