2013-10-28 44 views
0

我一直在使用视觉基本2010年快递约2个星期了,现在我试图做一个RPG游戏。直到现在,一切都一帆风顺。但我无法让我的标签显示进度栏的价值。 smoebody能帮我吗?VB 2010快递进度条

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 
+0

当你说你不能获得标签来显示进度条的价值是什么意思。您是否期望每次进度栏更新时都会更新标签,因为只需单击进度栏或标签即可查看代码,以便更新代码。 – Satal

+1

究竟是什么问题?你在哪里更新你的进度条的价值属性? –

回答

0

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

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或小于零,它不会让更改发生 - 而是返回错误消息。 否则,如果改变后有效,那么它会增加金额。

一旦发生金钱变化 - 进度条和标签会更新。

+0

查理,当我使用你的changemoney的想法(顺便说一句很好!),那么它不会停止说你会有太多或太少的钱。你有关于如何解决这个问题的想法吗? – Tuller45

+0

不太清楚你的意思。如果你能给我一个关于你的输入的例子,那么我也可以测试它。如果您只想“更新”进度栏和标签而不实际更改金钱。您可以创建一个名为“refreshMoney”的新子程序,并使其更新为Label和progressBar - 无需任何更改。你也可以传递值'0'。 (我可以给你一个例子,如果这是你的意思) –

+0

它是不可或缺的改变任何东西。我用它来编写你写的第一个代码。谢谢! – Tuller45