ProgressBar 进度条控件

ProgressBar 进度条控件

ProgressBar 通常用来显示任务的执行进度。可以设置最小值、最大值以及当前值,在后台代码中动态改变当前值来反映进度变化。通常在一些比较耗时的功能中使用,配合多线程来实时更新进度。

基本使用

点击按钮逐步增加进度条的值:

private void button1_Click(object sender, EventArgs e)
{
    if (this.progressBar1.Value == 100)
    {
        MessageBox.Show("完成");
    }
    else
    {
        this.progressBar1.Value++;
    }
}Code language: JavaScript (javascript)

常用属性

属性说明
Value当前进度值
Minimum最小值,默认 0
Maximum最大值,默认 100
Step每次调用 PerformStep() 时增加的步长
Style进度条样式
MarqueeAnimationSpeed滚动动画速度(Style 为 Marquee 时有效)
this.progressBar1.Minimum = 0;
this.progressBar1.Maximum = 100;
this.progressBar1.Step = 5;
this.progressBar1.Value = 0;Code language: JavaScript (javascript)

进度条样式(Style)

样式说明
Blocks块状填充(默认),从左到右逐块增长
Continuous连续填充,平滑增长
Marquee跑马灯效果,表示正在进行但不知道具体进度
// 跑马灯效果(适用于不确定进度的场景)
this.progressBar1.Style = ProgressBarStyle.Marquee;
this.progressBar1.MarqueeAnimationSpeed = 50;Code language: JavaScript (javascript)

使用 PerformStep 步进

private void button2_Click(object sender, EventArgs e)
{
    this.progressBar1.PerformStep(); // 按 Step 属性的值递增
}Code language: JavaScript (javascript)

使用 Increment 指定增量

private void button3_Click(object sender, EventArgs e)
{
    this.progressBar1.Increment(10); // 一次增加10
}Code language: JavaScript (javascript)

耗时操作中的进度显示(多线程示例)

在耗时操作中更新进度条时,需要使用多线程避免界面卡顿:

private void button4_Click(object sender, EventArgs e)
{
    Thread thread = new Thread(new ThreadStart(() =>
    {
        for (int i = 0; i <= 100; i++)
        {
            // 跨线程更新 UI
            this.progressBar1.Invoke(new Action(() =>
            {
                this.progressBar1.Value = i;
            }));
            Thread.Sleep(100); // 模拟耗时操作
        }
        this.progressBar1.Invoke(new Action(() =>
        {
            MessageBox.Show("任务完成!");
        }));
    }));
    thread.IsBackground = true;
    thread.Start();
}Code language: JavaScript (javascript)

重置进度条

this.progressBar1.Value = this.progressBar1.Minimum;Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注