计时器不停止

时间:2018-09-08 07:14:09

标签: vb.net timer

我正在创建一个基本游戏,并且计时器没有停止。这是代码:

Private Sub Timer04_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer04.Tick
    ProgressBar4.Increment(9)
    If ProgressBar4.Value = 100 Then
        Timer04.Stop()
        MsgBox("100%")
    End If
End Sub

有人可以帮我停止计时器吗?

2 个答案:

答案 0 :(得分:1)

您的问题几乎可以肯定是您的ProgressBar值永远不会等于100。您可以通过每次进入Tick事件时记录它的值来自己确定。但是,我只需要更改这一行:

   If ProgressBar4.Value = 100 Then

对此:

   If ProgressBar4.Value >= 100 Then

那应该可以解决问题。

编辑:即使确实可以解决问题,也不是解决问题的最佳方法。

您应该接受Enigmativity的建议并评估ProgressBar.Maximum而不是查看其值是否为100。现在,默认最大值为100,默认最小值为0。因此,如果您将增量保持9 ,您将在11次调用Increment方法之后达到99。现在,文档(here}这样说:

  

如果在调用Increment方法后,Value属性大于Maximum属性的值,则Value属性保持为Maximum属性的值。

因此,如果您现在是99岁,那么如果您没有更改最大值,那么再增加一次时间将使您达到100。

由于您似乎从未达到100,所以您可能已经在某个地方更改了Maximum属性,以致Value属性从不等于100,就像谜一样。

答案 1 :(得分:0)

您应该将代码更改为此:

Private Sub Timer04_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer04.Tick
    ProgressBar4.Increment(9)
    If ProgressBar4.Value = ProgressBar4.Maximum Then
        Timer04.Stop()
        MsgBox("100%")
    End If
End Sub

我怀疑您在代码的其他地方将ProgressBar4.Maximum设置为100以外的其他值。

最重要的是不要使用100之类的“魔术数字”。始终使用变量或常量。