0

我已经使用 Visual Basic 2010 Express 大约 2 周了,我正在尝试制作一款 RPG 游戏。直到现在一切都很顺利。但我无法让我的标签显示进度条值。smoebody可以帮帮我吗?

Public Class Form1

    Public Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
        Label2.Text = ProgressBar1.Value & ("")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        HouseBuy.show()
        Me.Hide()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        HouseSell.show()
        Me.Hide()
    End Sub

    Public Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click
        Label2.Text = ProgressBar1.Value & ("")
        If ProgressBar1.Value = 1000 Then
            MsgBox("You cant get any more money")
        ElseIf ProgressBar1.Value = 0 Then
            MsgBox("You are out of money")
        End If
    End Sub

    Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        mymap.Show()
        Me.Hide()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class
4

2 回答 2

2

也许将玩家的钱作为变量存储会更好。这样,进度条和标签文本将从变量的值更新,并且您不会将玩家的钱存储在进度条值中。

这是我可能如何做到的一个简单示例:

    Dim characterMoney As Integer 'Global variable - Player Money

Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_IncreaseMoney.Click
    changeMoney(60) 'Increase by 60
End Sub
Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_DecreaseMoney.Click
    changeMoney(-60) 'Decrease by 60
End Sub

Sub changeMoney(ByVal valToChange) 'Could change to a function (return true or false)

    Dim checkMoneyVal As Integer
    checkMoneyVal = (characterMoney + valToChange) 'Check Val after change

    If checkMoneyVal > 1000 Or checkMoneyVal < 0 Then 'If after the change 
        MessageBox.Show("You would have too much or too little money!") 'Its an invalid amount. 
    Else
        'Player has enough money.
        characterMoney = characterMoney + valToChange 'Increase/Decrease their money
    End If

    Label1.Text = characterMoney  'Update the label text
    ProgressBar1.Value = characterMoney 'Update the progress value
End Sub

所以在这个例子中。如果你想增加或减少玩家的钱。它将计算更改后的金额。如果它将大于 1000 或小于零,则不会让更改发生 - 而是返回错误消息。否则,如果更改后有效,则将增加金额。

一旦发生货币变化 - 进度条和标签将更新。

于 2013-10-28T13:33:39.513 回答
0

ProgressBar 组件(类的实例)具有您需要的 2 个属性:值和最大值。第一个你需要初始化最大属性,第二个增加你的 Value 属性。

于 2013-10-28T13:19:48.063 回答