问题是标签在 progress-bar 完成之前显示。 label 完全完成后,如何让progress-bar 显示?

我尝试将最大值更改为更高的数字,但没有用。

public partial class dload : Form
{
    public dload()
    {
        InitializeComponent();
    }

    private void dload_Load(object sender, EventArgs e)
    {
        label1.Visible = false;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int i = 0;
        progressBar1.Minimum = 0;
        progressBar1.Maximum = 5000;
        for (i = 0; i <= 5000; i++)
        {
            progressBar1.Value = i;
            if (i == 5000)
            {
                label1.Visible = true;
            }
        }
    }
}

最佳答案

实际上,您的代码运行非常广泛,将值从 0% 设置为 100% 大约不到一秒钟!但ProgressBar 有两种显示当前状态的样式( ClassicContinues )。

Continues模式下,如果进度值从0%变为100%,控件会显示动画,不能显示真实准确的进度。您可以通过 Thread.Sleep() 设置延迟并在 for 循环后立即显示您的标签以了解我发生了什么!

下面的代码将起作用:

private void button1_Click(object sender, EventArgs e)
{
    int i = 0;
    progressBar1.Minimum = 0;
    progressBar1.Maximum = 5000;
    for (i = 0; i <= 5000; i++)
    {
        Thread.Sleep(1);
        progressBar1.Value = i;

    }
    label1.Visible = true;
}

10-08 14:06