是否可以将一个进度条用于多个可变长度的进程?

时间:2013-02-08 08:28:51

标签: c# winforms visual-studio-2010

在我目前的情况下,我有一个winform应用程序dat为用户选择的几种数据类型生成随机数据。 用户还可以选择必须生成多少行,对于生成我使用button_click方法中调用的多个函数。 行的数量和每行的列数是可变的。 现在我的问题是可以为整个进程制作一个进度条吗? 这是我自己创建的第一个C#项目我已经找到了关于后台工作者的信息,但如果我的问题可能,我找不到相关信息。 希望somewhane可以帮助我,并抱歉我的英语不好。

4 个答案:

答案 0 :(得分:0)

那么你可以有多少行和列。然后将progressBar1.Maximum设置为row + column,当​​后台worker中的程序执行一列时,增加progressBar1.Value + = 1; 。所有必须在backgroundWorker中,以便progressBar顺利运行。

答案 1 :(得分:0)

ProgressBar有一个名为“Value”的成员。如果您知道将创建多少项,则可以相应地进行设置。

答案 2 :(得分:0)

如果我正确理解了您的问题,是的,您可以在代码的不同部分更新ProgressBar的价值。

如果要为不同的操作分配不同的值,只需制作一种排序方法。例如:

假设myProgressBar.Maximum = rowCount + columnCount;

public void UpdateProgressBar(int i)
{
   if(myProgressBar.Value < myProgressBar.Maximum)
   {
      if(myProgressBar + i > myProgressBar.Maximum)
          myProgressBar.Value = myProgressBar.Maximum;
      else myProgressBar.Value += i;
   }
   myProgressBar.Update();
}
同样,您可以在ProgressBar中想要反映的任何事件中调用类似的代码,例如添加或删除行或按钮点击。

查看有关BackGroundWorker的一些教程,这些教程会让您的用户界面保持响应状态。

答案 3 :(得分:0)

没有后台工作人员,你可以做到这一点。使用进度条的“最小值,最大值”和“值”属性来实现此目的。将progressbar1.Maximum设置为row的count和inside row for循环,将值增加1。

progressBar1.Minimum = 1;
progressBar1.Maximum = Rows.Count;

progressBar1.Value = 1;
for (int i = 1; i <= Row.Count; i++)
{
  progressBar1.Value = progressBar1.Value + 1;
  ...
  ... do your code
  ...