private void btnProgressBarStart_Click(object sender, EventArgs e) {
            this.labProgressBarShow.Visible = true; //状态显示可见.
            this.proBar.Value = 0;  //进度条的初始值.
            this.proBar.Minimum = 0;    //进度条最小值.
            this.proBar.Maximum = 10000; //进度条最大值.
            this.proBar.Step = 1;   //进度条的递增值.
            for (int i = 0; i <= this.proBar.Maximum; i += 1) {
                this.proBar.PerformStep();  //显示进度条每步的值.
                this.labProgressBarShow.Text = "当前进度" + i + ", 总值为 : " + this.proBar.Maximum;
               // Thread.Sleep(500);  //线程休眠.
            }
        }Description:
我让Label显示每步的进度条的 Value,但是不懂为什么都是到结束了才显示:
 this.labProgressBarShow.Text = "当前进度" + i + ", 总值为 : " + this.proBar.Maximum;
开始我以为是时间太短了,我设进度条的最大值很大,还是一样不行,甚至我用线程 休眠,干脆就不走了...这怎么解释,解决哈?大侠们!

解决方案 »

  1.   

    this.labProgressBarShow.Text = "当前进度" + i + ", 总值为 : " + this.proBar.Maximum;后加上Application.DoEvents();
      

  2.   

     for (int i = 0; i <= this.proBar.Maximum; i += 1) {
                     this.proBar.PerformStep();  //显示进度条每步的值.
                     this.labProgressBarShow.Text = "当前进度" + i + ", 总值为 : " + this.proBar.Maximum;
    label1.refresh;
                    // Thread.Sleep(500);  //线程休眠.
                 }
      

  3.   

    谢3位,请问:
    Application.DoEvents();
    是什么意思?
    通过委托使前台改变?
      

  4.   

    ProgressBar进度条是需要窗体重绘,重绘处理排入消息队列中。DoEvents() 是立刻处理消息队列,这样你就可以看到“动画”了