2013-10-28 4 views
0

나는 약 2 주 동안 visual basic basic express를 사용하고 있으며, RPG 게임을 만들기 위해 노력 중이다. 그리고 지금까지 모든 것이 원활하게 진행되고 있습니다. 하지만 나는 progressbars 값을 표시하기 위해 내 레이블을 얻을 수 없습니다. smoebody 나를 도울 수 있습니까? 값 및 최대 (클래스의 instanse)VB 2010 express Progressbar

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 구성 요소는 당신이 필요로하는 2 propeties 있습니다. 첫 번째로 초기화 된 최대 속성이 필요하고 두 번째로 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보다 작 으면 변경을 허용하지 않고 대신 오류 메시지를 반환합니다. 그렇지 않으면 변경 후 유효하면 금액만큼 돈이 증가합니다.

돈이 변경되면 진행률 표시 줄과 라벨이 업데이트됩니다.

+0

찰리 내가 changemoney 아이디어를 사용하면 (그런데 위대하다!) 그러면 돈이 너무 많거나 적다는 말을 멈추지 않을 것입니다. 그 문제를 해결하는 방법에 대한 아이디어가 있습니까? – Tuller45

+0

무슨 뜻인지 확실치 않습니다. 만약 당신이 내게 당신의 입력에 대한 예제를 줄 수 있다면 나는 그것을 테스트 할 수 있습니다. 실제로 돈을 변경하지 않고 진행률 표시 줄과 레이블을 '업데이트'하려는 경우. "refreshMoney"라는 새 서브 루틴을 만들어 돈을 바꾸지 않고도 Label 및 progressBar 만 업데이트 할 수 있습니다. 값 '0'을 전달할 수도 있습니다. (나는 이것이 당신이 의미하는 것이면 당신에게 모범을 줄 수있다) –

+0

더 이상 아무것도 바꿀 필요가 없다. 내가 작성한 첫 번째 코드로 작업 할 수있게되었습니다. 고맙습니다! – Tuller45