2012-09-26 42 views
1

我正在使用Visual Studio 2010 Professional。調試我的項目時,爲什麼我的表單不能在Visual Studio 2010中顯示?

我有一個窗體(及其關聯的vb文件)和另一個單獨的vb文件。當我去編譯和調試我的代碼時,我的建築成功了,並且窗體顯示,但「球」不移動。

我的啓動類:

Public Class Bouncer 

    Private bouncingBall As Ball 

    Private Sub CST8333_Lab3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     bouncingBall = New Ball(Me) 
     'Me.Controls.Add(Ball) 
    End Sub 

    Private Sub Timer_Tick(sender As System.Object, e As System.EventArgs) Handles Timer.Tick 
     bouncingBall.MoveBall() 
    End Sub 
End Class 

我等,單獨的類:

Public Class Ball 

    Private ballX As Integer 
    Private ballY As Integer 
    Private ballMovementX As Integer 
    Private ballMovementY As Integer 
    Private _bouncer As Bouncer 

    Sub New(bouncer As Bouncer) 
     _bouncer = bouncer 
     ballX = 50 
     ballY = 50 
     ballMovementX = 5 
     ballMovementY = 5 
    End Sub 

    Public Function GetBallX() As Integer 
     Return ballX 
    End Function 

    Public Sub MoveBall() 
     If (ballX >= _bouncer.Width) Then 
      ballMovementX = -ballMovementX 
     ElseIf (ballX <= 0) Then 
      ballMovementX = -ballMovementX 
     End If 
     If (ballY >= _bouncer.Height) Then 
      ballMovementY = -ballMovementY 
     ElseIf (ballY <= 0) Then 
      ballMovementY = -ballMovementY 
     End If 
     ballX += ballMovementX 
     ballY += ballMovementY 
    End Sub 
End Class 

我的表單顯示,但我的 「球」 不動。我想要的是我的Ball類中的變量和子例程控制我的Label「ball」的移動。任何幫助,建議?

+0

什麼形式?在您發佈的代碼中沒有任何地方提及任何形式的代碼。 –

回答

0

您應該使用計時器而不是While True循環。循環沒有給GUI一個更新屏幕的機會。

假設Ball是一種控制,它需要被添加到窗體的集合:

bouncingBall = New Ball(Me) 
Me.Controls.Add(bouncingBall) 
bouncingBall.MoveBall() 

目前還不清楚是什麼你Ball類是做。它看起來只是更新內部變量而不是實際移動控件,這正是我懷疑你正試圖完成的事情。

+0

謝謝你指出。我的While循環實際上是這裏的問題。如果我將它註釋掉,表單將打開並顯示。至於我的球,它似乎不是一個控制,雖然我希望它是一個標籤框,所以我必須在我的球類中擴展標籤,還是有更好的方法來做到這一點? –

+0

@ BenjaminC.Huskisson-Snider不同的方式來完成這取決於你想完成什麼。你可以使用一個Panel或一個PictureBox,或者只是在Form的繪畫事件中繪製你的球的座標。在計時器事件中,只需調用Invalidate方法來調用paint事件。 – LarsTech

+0

我寧願使用標籤框。它應該是一個基本的項目,所以我寧願不處理Paint()。我有Ball類,並希望將它與Label控件相關聯。 –

相關問題