簡體   English   中英

進度欄C#未顯示實際進度

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM