更新状态栏中的进度栏

时间:2012-04-10 14:08:06

标签: visual-studio-2010

我正在尝试弄清楚如何在状态栏中合并进度条以显示完成了多少处理。下面是我更新进度条的示例(不确定这是否正确)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    ToolStripProgressBar1.Value = ToolStripProgressBar1.Value + 2
    If ToolStripProgressBar1.Value = 100 Then
        ToolStripProgressBar1.Value = 0
        ToolStripProgressBar1.Value = ToolStripProgressBar1.Value + 2
        Timer1.Enabled = True
    End If
End Sub

这是按钮内的代码。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1Run.Click
    ToolStripStatusLabel1.Text = "Processing..."
    Timer1.Enabled = True

    'more code to be inserted here        

End Sub

我不确定如何根据您拥有的代码量更新进度条,并在处理完成后,更新ToolStripStatusLabel1以显示“正在处理...完成!”。< / p>

2 个答案:

答案 0 :(得分:1)

通常,您将使用PerformStep()方法更新ProgressBar。此操作将使ProgressBar的值增加Step属性中输入的值。

ProgessBar还有Maximum属性,用于确定进度何时达到100%。也就是说,如果Maximum = 100且Value = 100,则ProgressBar应显示为full。

典型设置:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1Run.Click
  ToolStripProgressBar1.Maximum = 100
  ToolStripProgressBar1.Step = 2
  ToolStripProgressBar1.Value = ToolStripProgressBar1.Minimum
  ToolStripStatusLabel1.Text = "Processing..."
  Timer1.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
  ToolStripProgressBar1.PerformStep()
  If ToolStripProgressBar1.Value >= ToolStripProgressBar1.Maximum Then
    Timer1.Stop()
    ToolStripStatusLabel1.Text = "Completed"
    ToolStripProgressBar1.Value = ToolStripProgressBar1.Minimum
  End If
End Sub

计时器通常是用于显示代码进展的奇数类型的度量。 ProgressBar通常与BackgroundWorker一起使用,以显示代码的进度。

答案 1 :(得分:0)

If ToolStripProgressBar1.Value = 100 Then

你确定你的价值会达到“完全”100吗?  也许

If ToolStripProgressBar1.Value >= 100 Then

或者是100个magic number

编辑:这实际上取决于您打算运行的代码。进度条只是您必须根据特定进程设置的用户的可视指示器。如果你只是希望它显示以显示某些事情发生(类似于小时玻璃图标),这应该工作。

您需要将timer.enabled设置为false并清理进度条。