vb.net进度条对“值”无效。 '价值'应介于'最小'和'最大'之间

时间:2013-07-17 20:43:37

标签: vb.net visual-studio loops progress-bar max

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

我正在努力弄清楚问题是什么,但直到现在我仍然无法找到解决方案,直到我运行它没有错误,它给了我这个错误

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

我已经设置了

ProgressBar2.Minimum = 0
ProgressBar2.Maximum = 100

请帮帮我:(

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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