Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 进度条值达到0时提示消息框_Vb.net_Visual Studio 2010 - Fatal编程技术网

Vb.net 进度条值达到0时提示消息框

Vb.net 进度条值达到0时提示消息框,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我做到了,所以我有一个进度条,这是球员的健康从100开始,并随着时间的推移通过计时器下降。当玩家健康进度条变为0时,我希望出现一条消息说“你死了!游戏结束。” 由于“Handles PlayerHealth.click”位,当进度条达到0时,我单击它,而不是执行此操作。但是我该如何改变PlayerHealth呢?单击以使其在进度条刚点击0时出现消息框,而不必单击它 我在智能感知列表中找不到正确的东西。还是有更好的方法 下面是一段有问题的代码: Private Sub AttackButton_C

我做到了,所以我有一个进度条,这是球员的健康从100开始,并随着时间的推移通过计时器下降。当玩家健康进度条变为0时,我希望出现一条消息说“你死了!游戏结束。”

由于“Handles PlayerHealth.click”位,当进度条达到0时,我单击它,而不是执行此操作。但是我该如何改变PlayerHealth呢?单击以使其在进度条刚点击0时出现消息框,而不必单击它

我在智能感知列表中找不到正确的东西。还是有更好的方法

下面是一段有问题的代码:

Private Sub AttackButton_Click(sender As System.Object, e As System.EventArgs) Handles AttackButton.Click
    PlayerHealthTimer.Start()
    EnemyHealth.Increment(-2)
End Sub

Private Sub PlayerHealthTimer_Tick(sender As System.Object, e As System.EventArgs) Handles PlayerHealthTimer.Tick
    PlayerHealth.Increment(-2)
End Sub

Private Sub PlayerHealth_Value(sender As System.Object, e As System.EventArgs) Handles PlayerHealth.Click
    If PlayerHealth.Value = 0 Then
        MsgBox("You died! Game over.")
    End If
End Sub
忽略中间的子对象。
谢谢大家!

它在单击时触发,因为在处理单击方法的子对象中有MessageBox

实际上,您可能希望使用您说要忽略的中间子节点:)。那个人负责处理每个记号的逻辑

Private Sub PlayerHealthTimer_Tick(sender As System.Object, e As System.EventArgs) Handles PlayerHealthTimer.Tick
    PlayerHealth.Increment(-2)
    if PlayerHealth.Value = 0 Then
      MsgBox("You died! Game Over.")
      ''Then make sure to stop the timer
      PlayerHealthTimer.Stop()
    End If
End Sub

它在单击时激发,因为在处理单击方法的子对象中有MessageBox

实际上,您可能希望使用您说要忽略的中间子节点:)。那个人负责处理每个记号的逻辑

Private Sub PlayerHealthTimer_Tick(sender As System.Object, e As System.EventArgs) Handles PlayerHealthTimer.Tick
    PlayerHealth.Increment(-2)
    if PlayerHealth.Value = 0 Then
      MsgBox("You died! Game Over.")
      ''Then make sure to stop the timer
      PlayerHealthTimer.Stop()
    End If
End Sub

您可以使用如下条件

if PlayerHealth.value<=0 then
'place a message box or other way to show info message
end if

如果PlayerHealth.value您可以使用如下条件

if PlayerHealth.value<=0 then
'place a message box or other way to show info message
end if

如果PlayerHealth.values似乎完成了一半的工作,谢谢!但是现在,虽然消息框现在打开了,但是大约有30个!我的代码与您复制的代码一模一样。每次我在关闭所有额外的消息框后单击“攻击”按钮,就会有很多消息框再次打开。@Laurence Chaffey当你按下“攻击”按钮时,计时器就会重新启动。重新启动计时器将导致它再次触发。@LaurenceChaffey您将看到多个消息框,因为代码仅在消息框关闭后停止计时器。计时器会一直滴答作响并创建消息框,直到你关闭其中一个。这似乎完成了一半的工作,谢谢!但是现在,虽然消息框现在打开了,但是大约有30个!我的代码与您复制的代码一模一样。每次我在关闭所有额外的消息框后单击“攻击”按钮,就会有很多消息框再次打开。@Laurence Chaffey当你按下“攻击”按钮时,计时器就会重新启动。重新启动计时器将导致它再次触发。@LaurenceChaffey您将看到多个消息框,因为代码仅在消息框关闭后停止计时器。计时器将一直滴答作响并创建消息框,直到您关闭其中一个消息框。