1
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If ProgressBar2.Value = 100 Then
        ProgressBar2.Value = ProgressBar2.Maximum()
        MsgBox("Posting Completed!")
        ProgressBar2.Enabled = False
    Else
        Do
            ProgressBar2.Value += 5
        Loop
    End If


End Sub

已经 3 小时我正在努力找出问题所在,但直到现在我仍然找不到解决方案,在我运行它之前没有错误,它给了我这个错误

“105”的值对“值”无效。“值”应介于“最小值”和“最大值”之间。参数名称:值

我已经设置了我的

ProgressBar2.Minimum = 0
ProgressBar2.Maximum = 100

请帮帮我:(

4

2 回答 2

4

上面的代码有问题。

循环

    Do
        ProgressBar2.Value += 5
    Loop

永远不会停止,当它达到 100 时,它将增加超过最大值。
不,当您在此循环中时,不会执行方法入口处的测试

您应该只增加一次,然后退出循环并等待下一个 Timer 滴答再次增加

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If ProgressBar2.Value + 5 >= ProgressBar2.Maximum Then
        ProgressBar2.Value = ProgressBar2.Maximum
        MsgBox("Posting Completed!")
        Timer1.Stop()
    Else
        ProgressBar2.Value += 5
    End If
End Sub

此外,当您达到最大值时,您应该简单地停止 Timer1 而不是禁用 ProgressBar2

于 2013-07-17T20:50:53.097 回答
0

因为您将值从 100 增加到 105,所以它在 If 语句中失败,因为您没有检查它是否大于或等于>=

此外,您可以摆脱循环,因为它没有出口。

于 2013-07-17T20:46:58.217 回答