【问题标题】:Progress Bar exceeding maximum/minimum value in VB.Net 2010?进度条超过 VB.Net 2010 中的最大值/最小值?
【发布时间】:2012-11-28 16:45:37
【问题描述】:

我正在尝试模拟一个游戏,玩家可以通过点击“攻击”和“治疗”按钮来伤害敌人或治愈自己。我尝试在一个进度条上进行测试运行,以确保在修改它以适应我的游戏之前一切正常,并制作了一个新的 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

任何帮助将不胜感激。 另请注意,我是编码初学者,肯定会对大量代码感到困惑。

我相信很多像这样弄乱进度条的人都会遇到同样的问题,我知道这可能很愚蠢!

感谢您的帮助!

【问题讨论】:

    标签: vb.net progress-bar max minimum


    【解决方案1】:

    你做事的顺序不对。 您首先将更改应用于进度条,然后检查它是大于最大值还是小于最小值。 将进度条想象成一杯水。你不能把它填满边缘(现在人们没有关于冰的聪明人),因为那样你到处都有水。您也不能提取比玻璃杯中的水更多的水(请不要现在关于除湿的聪明人)。你现在要做的是首先用太多的水填充进度条,让它越过边缘。然后检查你是否往杯子里倒了太多水。而不是在倒入玻璃杯之前测量水量。 :D

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

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

    然后最小值相同。

    【讨论】:

    • 一个提示以供将来参考。用 VB.NET 标记 VB.NET 问题,否则它不会显示给监控 VB.NET 问题的人。
    • 啊,我没有意识到。再次感谢您:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多