1

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

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以显示“处理中......完成!”。

4

2 回答 2

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一起使用以显示代码的进度。

于 2012-04-10T14:51:04.707 回答
0
If ToolStripProgressBar1.Value = 100 Then

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

If ToolStripProgressBar1.Value >= 100 Then

还是 100 是一个神奇的数字

编辑:这实际上取决于您打算运行的代码。进度条只是您必须根据特定流程设置的用户视觉指示器。如果你只是想让它显示正在发生的事情(类似于沙漏图标),这应该可以工作。

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

于 2012-04-10T14:14:42.593 回答