[英]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.