0

我正在尝试制作迷宫游戏,但这是我似乎无法开始工作的唯一代码。我希望图片框(播放器)沿箭头键的方向移动。我试过这段代码:

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

我也尝试过位置代码,但箭头键似乎没有移动图片框。这是我遇到的唯一问题。关于如何解决这个问题的任何想法?

4

2 回答 2

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 代码来完成代码。

于 2013-10-06T21:33:24.143 回答
0

你为什么不尝试使用 Listbox1,制作一个图像数组并将 listbox1 带回它看不到,然后从图像文件夹的文件夹路径中添加 listbox1,它看起来像简单的图像查看器。

你可以试试这个

使用按钮或任何带有点击方法的东西

    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。希望能帮助到你

于 2013-10-07T04:07:45.477 回答