我正在尝试制作一个迷宫游戏但是这是我似乎无法开始工作的唯一代码。我希望图片框(播放器)按箭头键的方向移动。 我试过这段代码:
Private Sub BLevel1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = 37 Then
PictureBoxPlayer.Left = PictureBoxPlayer.Left - 10
ElseIf e.KeyCode = 38 Then
PictureBoxPlayer.Top = PictureBoxPlayer.Top - 10
ElseIf e.KeyCode = 39 Then
PictureBoxPlayer.Left = PictureBoxPlayer.Left + 10
ElseIf e.KeyCode = 40 Then
PictureBoxPlayer.Top = PictureBoxPlayer.Top + 10
End If
End Sub
我也尝试了位置代码,但箭头键似乎没有移动图片框。这是我遇到的唯一问题。 关于如何解决这个问题的任何想法?
答案 0 :(得分:3)
光标键是特殊的,它们用于将焦点从一个控件导航到另一个控件。所以他们通常在他们到达目前关注的控制之前被截获。此外,您为表单编写了一个KeyDown事件,当表单具有其他控件时它不会具有焦点,因此不会获得KeyDown事件。目前还不清楚这是否适用于此。
最好的方法是自己拦截光标键,然后才能在其他地方使用。您可以通过为表单的ProcessCmdKey()方法编写覆盖来实现此目的,如下所示:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
If keyData = Keys.Left Then
PictureBoxPlayer.Left = Math.Max(0, PictureBoxPlayer.Left - 10)
Return True
ElseIf keyData = Keys.Right Then
PictureBoxPlayer.Left = Math.Min(Me.ClientSize.Width - PictureBoxPlayer.Width, PictureBoxPlayer.Left + 10)
Return True
ElseIf keyData = Keys.Up Then
'' etc..
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
我投入了代码以防止用户将播放器移出表单之外。通过编写Keys.Up和Keys.Down代码完成代码。
答案 1 :(得分:0)
为什么不尝试使用Listbox1,制作图像数组并将listbox1带回来以便无法看到,然后从图像文件夹的Folder Path中添加listbox1,看起来像是简单的图像查看器。 / p>
你可以试试这个
使用按钮或任何点击方法
Dim myimg As Array
Private Sub img_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles img.Click
If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
myimg = IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath)
ListBox1.Items.AddRange(myimg)
ListBox1.SelectedIndex = 0
End If
End Sub
然后在列表框中将选项卡索引设置为1 然后单击listbox1两次并插入此
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Me.Refresh()
Me.BackgroundImage = Nothing
Me.BackgroundImage = Image.FromFile(ListBox1.SelectedItem.ToString)
End Sub
使用箭头键,图像会自动更改。 您可以将我更改为Picturebox。 希望它有所帮助