进度条在VB.Net 2010中超过最大值/最小值?

时间:2012-12-11 06:49:10

标签: vb.net progress-bar max minimum

我正在尝试模拟一个游戏,玩家可以通过点击“攻击”和“治疗”按钮来伤害敌人或自我治疗。我试图在一个进度条上进行测试运行,以确保一切正常,然后再修改它以适应我的游戏,并制作了一个新的WindowsApplication。

我在表单上有一个进度条以及一个攻击按钮和一个治疗按钮,如果我通过治疗超过进度条的最大值或通过损坏超过最小值,它会喷出错误。我无法弄清楚在两种情况下修复它的代码行,我一直在寻找答案。

这是我的治疗按钮代码;

Private Sub btnHeal_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) _
                      Handles btnHeal.Click

    prgHealth.Value = prgHealth.Value + 10

    If prgHealth.Value >= prgHealth.Maximum Then
        prgHealth.Value = prgHealth.Maximum
    End If

End Sub

这是我的伤害按钮代码;

Private Sub btnDamage_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                        Handles btnDamage.Click

    prgHealth.Value = prgHealth.Value - 10

    If prgHealth.Value < prgHealth.Minimum Then
        prgHealth.Value = prgHealth.Minimum
    End If

End Sub

非常感谢任何帮助。 还请注意,我是编码的初学者,肯定会对大量代码感到困惑。

我敢肯定很多像这样搞乱进度条的人会遇到同样的问题,我知道这可能是愚蠢的事情!

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

你正在以错误的顺序做事。 您首先将更改应用于进度条,然后检查它是否超过最大值或小于最小值。 把进度条想象成一杯水。你不能把它填满边缘(没有聪明的评论关于冰现在的人)因为那时你将到处都有水。你也不能提取比玻璃杯中更多的水(现在请不要选择有关除湿的评论)。你现在要做的是首先用过多的水填充进度条,以便它越过边缘。然后检查你是否向水中倒了很多水。而不是在将水倒入玻璃杯之前测量水量。 :d

您需要先进行检查。像这样:

if prgHealth.Value + 10 > prgHealth.Maximum Then
  prgHealth.Value = prgHealth.Maximum
else
  prghealth.Value = prgHealth.Value + 10
end if

然后同样为最低限度。