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)


Previous: PrintDialog 打印对话框
Next: PropertyGrid 属性表格控件