进度条C#没有显示真正的进展

时间:2017-10-20 06:12:28

标签: c# progress-bar

我是C#编程的新手。该程序应该转换kg tolbs / oz / gram。公斤数字在textBox1中,在第二个textBox中是结果.RempadBar最大值是50001,如果我有,例如400,它会显示progressBar完成,即使它应该在20%-30%左右。谢谢。

    private void button1_Click(object sender, EventArgs e)
    {
        int s = Convert.ToInt32(textBox1.Text);
        progressBar1.Maximum = 50001;
        if (s > 0 && s <= 500)
        {
            if (radioButton1.Checked == true)
            {
                progressBar1.Value = 0;
                int k = Convert.ToInt32(s * 2.20462262);
                textBox2.Text = Convert.ToString(k);
                for (int i = 1; i <= k; i++)
                {
                    progressBar1.Increment(i);
                }
            }
            if (radioButton2.Checked == true)
            {
                progressBar1.Value = 0;
                int k = Convert.ToInt32(s * 35.2739619);
                textBox2.Text = Convert.ToString(k);
                for (int i = 1; i <= k; i++)
                {
                    progressBar1.Increment(i);
                }
            }

            if (radioButton3.Checked == true)
            {
                progressBar1.Value = 0;
                int k = Convert.ToInt32(s * 1000);
                textBox2.Text = Convert.ToString(k);
                for (int i = 1; i <= k; i++)
                {
                    progressBar1.Increment(i);
                }
            }

        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        textBox1.Text = textBox2.Text = "";
        progressBar1.Value = 0;
    }
}

2 个答案:

答案 0 :(得分:0)

我想问题是您使用value而不是设置Increment属性。 for (int i = 1; i <= k; i++) { progressBar1.Increment(i); } 将给定值添加到当前值。

所以例如在这个循环中

progressBar1.value = k

对于第一次迭代(i = 1),进度条的值将为1,对于第二次迭代,它将为3,因为您将1乘以2,等于3.对于3次迭代,它将是6 ...

所以不要使用循环,你可以直接使用

android.useDeprecatedNdk=true

答案 1 :(得分:0)

如果没有更多上下文,有点难以辨别,但我的猜测是,您永远不会将progressBar1.Value重置回各个0块之外的if。我假设这是winforms或wpf应用程序的一部分,您需要通知主gui线程需要更新控件。这样做的方法通常是INotifyPropertyChanged。有关背景信息,请参阅here