C#的processbar问题,怎么才能使得在做两个for循环的时候,进度条一点一点的向前滚,而不是

2025-04-27 09:40:22
推荐回答(4个)
回答1:

这是因为你的for循环与gui线程是同一条,所以只有在执行完所有循环以后才会刷新processbar。解决方法是将循环放到另一个线程中,然后通过委托来更新processbar就可以了。

回答2:

2个方法 一个是用timer控件 间隔在根据自己调节 每次progressbar的value+1 这样实现缓慢增长

或者在你的for循环里面用thread.sleep(n) n也根据自己的感觉来填写 n是代表的毫秒 原理上是跟timer控件是一样的
你就用timer控件好了 更直观 可以在form_load里面修改timer控件的间隔值

回答3:

  private delegate void RunText(int value);
        public void LoadBar(int value)
        {
                if (progressBar1.InvokeRequired)
                {
                    RunText t = new RunText(LoadBar);
                    this.progressBar1.BeginInvoke(t, new object[] { value });
                }
                else
                {
                    this.progressBar1.Value = value;
                }
        }

        public void ExecuteNewThread()
        {
            for (var i = 0; i < 10; i++)
            {
                for (var j = 0; j < 10000; j++)
                {
                    LoadBar(j);
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(ExecuteNewThread));
            t.IsBackground = true;
            t.Start();
        }

回答4:

progressBar1.Maximum = 100;
            progressBar1.Value = 0;
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    progressBar1.Value += 1;
                }
            }