Winforms进度条无法正常工作

时间:2015-07-23 05:51:40

标签: c# winforms

这是我第一次使用进度条。我无法在进度条中看到进度指示。我写了以下代码。

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Maximum = 1000000;
            progressBar1.Value = 0;
            progressBar1.Step=10;
            Int64 i = 10000000000;
            while (i != 1)
            {
                i = i / 10;
                System.Threading.Thread.Sleep(1000);
                progressBar1.Increment(10);
            }
        }
    }
}

我看不到进度条中显示的任何进度。请给我一个解决方案

2 个答案:

答案 0 :(得分:2)

最多尝试100;)

使用/ 10,你不会运行100000(1000000 /步10)。你会做10;)

答案 1 :(得分:1)

您对进度条的基本使用是正确的,但是您的某些其他值有些奇怪。事实上,你的代码将部分工作,但循环将在完成进度条之前完成(我的快速计算表明,即使你的循环继续,也需要大约28分钟才能完成填充栏!))

换句话说,您可能只是没有看到进度条中的更改,因为它太小了!

稍加修改可能会略微改进示例,并显示进度条按预期工作(并且比原始代码快一点)。

    private void button1_Click(object sender, EventArgs e)
    {
        progressBar1.Maximum = 10; // Smaller number of steps needed
        progressBar1.Value = 0;
        progressBar1.Step = 1;
        Int64 i = 10000000000; 
        while (i != 1) // This will require 10 iterations 
        {
            i = i / 10;
            System.Threading.Thread.Sleep(1000); 
            progressBar1.Increment(1); // one step at a time
        }
    }