Skip to content

ProgressBar 类

ProgressBar 是一个水平或垂直条,可视化表示范围内的进度。三个可配置轴塑造视觉:Scrolling(分段/平滑/跑马灯)、State(Normal / Error / Paused,为条着色以匹配OS主题)和 Orientation(水平或垂直)。

vb
Private Sub StartTask()
    ProgressBar1.Min = 0
    ProgressBar1.Max = ItemCount
    ProgressBar1.Step = 1
    ProgressBar1.Value = 0
End Sub

Private Sub OnItemDone()
    ProgressBar1.StepIt   ' advances by Step (1 here) and fires Change
End Sub

Private Sub OnTaskFailed()
    ProgressBar1.State = PrbStateError
End Sub

对于不确定进度(例如等待没有长度信息的服务器响应),使用跑马灯变体:

vb
ProgressBar1.Scrolling = PrbScrollingMarquee
ProgressBar1.MarqueeSpeed = 30       ' milliseconds per animation step
ProgressBar1.MarqueeAnimation = True ' start animating

控件从 BaseControlNotFocusable2 继承不可聚焦矩形可停靠成员 --- 大小、位置、AnchorsDockAppearanceMousePointer / MouseIconToolTipTextDragMode / DragIconDragRefreshZOrderCausesValidationVisualStyleshWndHelpContextID / WhatsThisHelpID

三个配置轴

视觉效果是三个属性的笛卡尔积:

  • Scrolling --- Standard(默认,动画分段条)、Smooth(连续块 --- 结合 SmoothReverse 允许进度条递减)或 Marquee(不确定动画条纹;通过 MarqueeAnimation + MarqueeSpeed 控制)。
  • State --- Normal(主题默认颜色,通常为绿色)、Error(通常为红色)或 Paused(通常为黄色)。OS根据当前主题选择实际颜色。
  • Orientation --- HorizontalVertical

三者均可在运行时更改;底层Win32样式重新应用而无需重新创建窗口。

范围、值和步进

MinMax 界定范围。Value 是当前位置。StepStepIt 推进进度条的量,用于驱动常见的循环模式:

vb
ProgressBar1.Min = 0
ProgressBar1.Max = Items.Count
ProgressBar1.Step = 1
For Each item In Items
    DoWork item
    ProgressBar1.StepIt
Next

每次 StepIt 调用将 Value 增加 Step 并触发 Change 事件。

属性

BackColor

绘制在进度条段后面的背景颜色。OLE_COLOR。默认:vbButtonFace。通过 PBM_SETBKCOLOR 应用。

BorderStyle

控件的边框样式。ControlBorderStyleConstants 的成员。默认:vbNoBorder

ForeColor

进度条段本身的颜色。OLE_COLOR。默认:vbHighlight。通过 PBM_SETBARCOLOR 应用。

INFO

OS视觉样式主题通常会覆盖标准渲染中的此值。要在运行时看到分配的 ForeColor,将 VisualStyles 设为 False 以禁用视觉样式。

MarqueeAnimation

跑马灯动画当前是否运行。Boolean。默认:False。仅在 ScrollingPrbScrollingMarquee 时有意义。设为 True 开始,False 停止。

MarqueeSpeed

跑马灯动画更新间隔,以毫秒为单位。Long。默认:80

Max

范围的上限。Long。默认:100MinMax 的组合通过 PBM_SETRANGE32 应用于底层控件。

Min

范围的下限。Long。默认:0

Orientation

进度条的方向。PrbOrientation 的成员。默认:PrbOrientationHorizontal

Scrolling

进度的视觉样式。PrbScrolling 的成员。默认:PrbScrollingStandard

SmoothReverse

平滑进度条是否可以递减(当 Value 被设为更小的数时)。Boolean。默认:False。没有此标志时,已达到比如80%的平滑条在 Value 减少时不会可见地递减 --- 它只是弹回。仅在 ScrollingPrbScrollingSmooth 时有意义。

State

进度条的视觉状态。PrbState 的成员。默认:PrbStateNormal。OS使用该值为进度条着色 --- PrbStateError 通常渲染为红色,PrbStatePaused 通常渲染为黄色,PrbStateNormal 使用主题默认进度颜色(通常为绿色)。

Step

StepIt 推进 Value 的量。Long。默认:10

Value

范围内的当前位置。Long。默认成员。通过 PBM_GETPOS / PBM_SETPOS 读写。在控件初始化阶段之后更改值时触发 Change

方法

StepIt

Value 推进 Step,到达 Max 后回绕到 Min。触发 Change 事件。

语法:object.StepIt

事件

Change

Value 已更改时触发 --- 无论是通过直接赋值、通过 StepIt,还是通过代码调整 Step 并重新应用。

语法:object_Change( )

Click, DblClick

继承的鼠标事件。

DragDrop, DragOver

继承的拖放事件。

Initialize

控件窗口创建后触发。

MouseDown, MouseMove, MouseUp

继承的鼠标事件。

OLECompleteDrag, OLEDragDrop, OLEDragOver, OLEGiveFeedback, OLESetData, OLEStartDrag

继承的OLE拖放事件。

PrbOrientation

确定进度条的方向。在 ProgressBar 类上声明。

成员描述
PrbOrientationHorizontal0水平条;进度从左到右流动。
PrbOrientationVertical1垂直条;进度从下到上流动。

PrbScrolling

确定进度条在值变化时如何动画。在 ProgressBar 类上声明。

成员描述
PrbScrollingStandard0分段条,带有经典的离散块动画。
PrbScrollingSmooth1连续块,无段间间隙。配合 SmoothReverse 允许值可见地递减。
PrbScrollingMarquee2不确定动画条纹。通过 MarqueeAnimationMarqueeSpeed 控制;实际 Value 无关。

PrbState

确定进度条的颜色主题。在 ProgressBar 类上声明。

成员描述
PrbStateNormal1主题默认进度颜色(通常为绿色)。
PrbStateError2错误状态(通常为红色)。
PrbStatePaused3暂停状态(通常为黄色)。

另见

  • Slider --- 当用户需要在范围内设置值,而不仅仅是查看进度时
  • ControlTypeConstants --- vbProgressBar 所在位置

twinBASIC及其LOGO版权为作者"韦恩"所有