2015-03-13 21 views
0

我正在創建一個遊戲,如果用戶在鍵盤上按下某個鍵,圖片框將從特定方向移動。當用戶按下箭頭鍵時,我創建了一個處理Picturebox運動的類。這是這一點,但在PictureBox不向右移動當我實例化它的形式時,PictureBox不會在KeyDown上移動

Public Class movement 

    Public Function right() As Action 

     Dim myform As New Form3() 
     myform.PictureBox1.Left += 1 
     Return right 
    End Function 
End Class 

++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++

Public Class Form3 

    Public Sub Form3_KeyDown1(sender As Object, e As KeyEventArgs) Handles Me.KeyDown 
     Dim r As New movement 

     Select Case e.KeyCode 

      Case Keys.Right 
       r.right() 

     End Select 
    End Sub 


End Class 

但當我致電Form3直接在班級運動,圖片框從右側移動。我實例化表單的原因是因爲我將使用不同形式的一些框架或大量圖片框。

Public Class movement 

    Public Function right() As Action 


     Form3.PictureBox1.Left += 1 
     Return right 
    End Function 
End Class 
+0

您每次在按鍵關閉時都會創建一個'Form3'的新實例,但是您並未顯示它。 – dbvega 2015-03-13 06:52:47

+0

那麼,代碼應該是什麼樣的我沒有一個想法 – 2015-03-13 07:02:43

+0

如果你想要移動一個'圖片框'在外部'窗體'你需要有一個'窗體'的實例存儲,例如在一個私人領域。 – dbvega 2015-03-13 07:21:02

回答

0

最後我給你寫了個例子。

Public Class FormTarget 
    Friend Sub LeftMovePictureBox(Optional ByVal offset As Integer = 1) 
     PictureBox1.Left += offset 
    End Sub 
    Friend Sub TopMovePictureBox(Optional ByVal offset As Integer = 1) 
     PictureBox1.Top += offset 
    End Sub 
End Class 

而且控制器:

Public Class FormController 
    ReadOnly _formTarget As New FormTarget 

    Protected Overrides Sub OnLoad(e As EventArgs) 
     _formTarget.Show() 
     MyBase.OnLoad(e) 
    End Sub 

    Protected Overrides Sub OnClosing(e As System.ComponentModel.CancelEventArgs) 
     _formTarget.Close() 
     MyBase.OnClosing(e) 
    End Sub 

    Private Sub FormController_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown 
     Dim speed As Double = 1D 
     If e.Modifiers = Keys.Control Then 
      speed = 10D 
     End If 
     Select Case e.KeyValue 
      Case Keys.Right 
       _formTarget.LeftMovePictureBox(1 * speed) 
      Case Keys.Left 
       _formTarget.LeftMovePictureBox(-1 * speed) 
      Case Keys.Up 
       _formTarget.TopMovePictureBox(-1 * speed) 
      Case Keys.Down 
       _formTarget.TopMovePictureBox(1 * speed) 
     End Select 
    End Sub 
End Class 

我希望它能幫助。

+0

您好,謝謝您的幫助,順便說一句dbvega我仍然對您的代碼感到困惑。我不知道我的Form3在哪裏以及我的班級是如何移動我的圖片盒的 – 2015-03-13 09:35:40

+0

@JohnPerez「FormController」是移動類,「FormTarget」是你的「Form3」。 – dbvega 2015-03-13 13:11:41

相關問題