Winforms进度条更新

时间:2013-06-13 16:19:13

标签: c# multithreading winforms progress-bar

我是C#的新程序员,我想要一些帮助。我搜索了很多,但我没有找到一个简单的例子。请参阅以下代码:

 public partial class Welcome : Form
 {
     public Welcome()
     {
         InitializeComponent();
     }

     private void button3_Click(object sender, EventArgs e)
     {
         Compare comp = new Compare();
         comp.Comparator();
     }
 }

Compare Class我有一个包含简单循环的简单方法:

 public class Compare
 {
     public void Comparator()
     {
         for (int i;i<val;i++)
         { /* ............. */ }
     }

 }

我希望以ProgressBar的增量值并行更新i

2 个答案:

答案 0 :(得分:1)

你说你搜索了很多......在哪里?这些是最简单的事情,在MSDN中有很好描述的例子

BackgroundWorker_doWork方法中的

Parallel.For(0, val, i =>
{
    ...
    backgroundWorker.ReportProgress(0);
});
BackgroundWorker_reportProgress方法中的

wf.progressBar.Value=wf.progressBar.Value + 1;

在主窗体构造函数

public Welcome()
{
    InitializeComponent();
    Compare.wf=this;
}

public class Compare
{
    static Welcome wf;
    public void Comparator()
    {
        backgroundWorker.RunWorkerAsync();
    }
}

答案 1 :(得分:0)

这样做的一个简单方法是:

     public class Compare
     {
         public void Comparator()
         {
             progressBar.Value = 0;
             progressBar.Maximum = val;
             progressBar.Step = 1;
             for (int i;i<val;i++)
             { 
                 /* ............. */ 
                 progressBar.PerformStep();
             }
         }
     }