我是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;
}
}
答案 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。