ProgressBar 控件的说明 2:用 ProgressBar 显示超时的间隔

创建跨网进程的应用程序经常使用一个“超时”间隔。当达到该预先确定的时间间隔之前,会询问用户取消该操作,还是继续等待。用图形表示该超时间隔的一个方法,就是使用 ProgressBar 控件。

下面的示例使用了如下控件:

要创建反映超时间隔的进度栏,请按照以下步骤执行:

  1. 在 Form 的 Load 事件中,将 Timer 控件的 Interval 属性设置为 1000。

  2. 将 ProgressBar 控件的 Max 属性设置为超时间隔。

  3. 用 Enabled 属性启动 Timer。

  4. 在 Timer 控件的 Timer 事件中,声明 Static 变量以统计间隔的次数。

  5. 将 ProgressBar 的值设置为该变量。

  6. 检查 ProgressBar 的值是否达到了 Max 属性。

在 Form 的 Load 事件中,将 Timer 控件的 Interval 属性设置为 1000

在 Form 对象的 Load 事件中,设置 Timer 控件的 Interval 属性。由于以秒为单位为进程计时更有用,故将 Interval 设置为 1000(毫秒,即 1 秒)。这样,每隔一秒,ProgressBar 控件的 Value 属性被更新一次。

tmrTimer.Interval = 1000

在 Form 的 Load 事件中,将 ProgressBar 控件的 Max 属性设置为超时间隔

在 Load 事件中还应设置 ProgressBar 的 Max 属性。Max 属性的值应为 Timer 停止之前,希望它持续计时的时间。同时为准确地反映经过的时间,ProgressBar 的 Min 属性应设置为 1。

Load 事件还被用来隐藏 ProgressBar,即将其 Visible 属性设置为 False。下面的代码显示了包括前面的代码在内的整个 Load 事件代码。

Private Sub Form_Load()
   prgBar1.Visible = False
   tmrTimer.Interval = 1000
   prgBar1.Max = 10 'Timer 将运行 10 秒钟。
End Sub

用 Enabled 属性启动 Timer

要启动 Timer,必须使用 Enabled 属性。在开始为任何过程计时的同时,应显示 ProgressBar,如下所示:

Private Sub cmdBegin_Click()
   prgBar1.Visible = True
   tmrTimer.Enabled = True
End Sub

在 Timer 事件中,声明静态变量并将其设置为 1

在 Timer 事件中,声明静态变量。这样就能够在每次发生 Timer 事件时,方便地递增该变量。同时由于不希望从 0 开始计数,所以使用 IsEmpty 函数判断后将该变量设置为 1,如下所示:

Static intTime
If IsEmpty(intTime) Then intTime = 1

将 ProgressBar 的 Value 设置为变量值

每次发生 Timer 事件时,ProgressBar 的 Value 属性必须设置为该静态变量的值:

prgBar1.Value = intTime

检查 ProgressBar 的值是否已经达到其 Max 属性

在 ProgressBar 的 Value 属性被更新后,必须检查该变量是否已经达到了超时的限制。如果已经达到,该变量必须被重新设置为 1,ProgressBar 控件应被隐藏,并且它的 Value 属性应重新设置为 1,而 Timer 控件也应停用。如果没有达到限制,则该变量递增一。这些步骤都在 Timer 事件中,用 If 语句实现,如下所示:

Private Sub tmrTimer_Timer()
   Static intTime '声明静态变量。
   '第一次执行时,该变量应为空值。
   '如果它是空变量,将其设置为 1If IsEmpty(intTime) Then intTime = 1
   
   prgBar1.Value = intTime '更新 ProgressBar    
   If intTime = prgBar1.Max Then
      Timer1.Enabled = False
      prgBar1.Visible = False
      intTime = 1
      prgBar1.Value = prgBar1.Min   
   Else
      intTime = intTime + 1
   End If
End Sub

完整代码

下面是在本主题中描述的示例的完整代码:

Private Sub Form_Load()
   prgBar1.Visible = False
   tmrTimer.Interval = 1000
   prgBar1.Max = 10 'Timer 将运行 10 秒钟。
End Sub

Private Sub cmdBegin_Click()
   prgBar1.Visible = True
   tmrTimer.Enabled = True
End Sub

Private Sub tmrTimer_Timer()
   Static intTime '声明静态变量。
   '第一次执行时,该变量应为空值。
   '如果它是空变量,将其设置为 1If IsEmpty(intTime) Then intTime = 1
   
   prgBar1.Value = intTime '更新 ProgressBar    
   If intTime = prgBar1.Max Then
      Timer1.Enabled = False
      prgBar1.Visible = False
      intTime = 1
      prgBar1.Value = prgBar1.Min   
   Else
      intTime = intTime + 1
   End If
End Sub