【问题标题】:Winforms Progress Bar updateWinforms 进度条更新
【发布时间】:2013-06-10 03:15:33
【问题描述】:

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

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

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

CompareClass我有一个简单的方法,其中包含一个简单的循环:

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

 }

我想更新ProgressBar,同时增加i 的值。

【问题讨论】:

标签: c# multithreading winforms progress-bar


【解决方案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();
    }
}

【讨论】:

  • 相当确定进度条在主窗体上。您的解决方案不会将其报告回调用表单
【解决方案2】:

一个简单的方法是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2020-11-05
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多