我正在创建一个基本游戏,并且计时器没有停止。这是代码:
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
有人可以帮我停止计时器吗?
答案 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
之类的“魔术数字”。始终使用变量或常量。