[英]Progress Bar C# not showing the real progress
我是C#编程的新手,该程序应将kg转换为kg / lb / oz / g。 公斤数在textBox1中,在第二个textBox中是结果。ProgressBar最大值为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;
}
}
我想问题是您使用的是progressBar.increment
而不是设置value
属性。 Increment
将给定值添加到当前值。
所以在这个循环中
for (int i = 1; i <= k; i++)
{
progressBar1.Increment(i);
}
对于第一次迭代(i = 1),进度条的值为1,对于第二次迭代,它将为3,因为您将1加2等于3。对于3次迭代,它将为6 .. 。
因此,除了使用循环之外,您还可以
progressBar1.value = k
如果没有更多上下文,很难说出来,但是我的猜测是,您永远不会在各种if
块之外将progressBar1.Value
重置为0
。 我假设这是winforms或wpf应用程序的一部分,您需要通知主GUI线程需要更新控件。 这样做的方法通常是通过INotifyPropertyChanged
。 有关某些背景,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.