【问题标题】:Form not reading arrow key in keydown event表单未在 keydown 事件中读取箭头键
【发布时间】:2013-11-17 03:27:46
【问题描述】:

我正在编写一个表单,该表单根据箭头键的按下将图片框向左或向右移动一定距离。我知道表单需要 KeyPreveiw = True,并进行了相应设置。我的代码是:

Public Sub frmGame_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.A OrElse e.KeyCode = Keys.Left Then
        leftorright = -1
    End If
    If e.KeyCode = Keys.D OrElse e.KeyCode = Keys.Right Then
        leftorright = 1
    End If
    If e.KeyCode = Keys.W OrElse e.KeyCode = Keys.Up Then
        upordown = -1
    End If
    If e.KeyCode = Keys.S OrElse e.KeyCode = Keys.Down Then
        upordown = 1
    End If
End Sub

在这个块中,WASD 会相应地工作,但是 LRUD 箭头根本不会触发。我尝试使用:

Msgbox(e.keycode.tostring())

显示它们是否正在发射,其他按钮有效(123、ABC 等),但箭头没有。我对这个问题的猜测是我在表单上有按钮,并且他们自己使用按键(优先于表单)。在我的表单上,我有 3 个按钮,当我按下让我们说向下箭头时,我可以看到每个按钮都通过三个按钮突出显示。我该如何解决这个问题?提前谢谢!

编辑:删除按钮后,代码工作。如果可能的话,我需要弄清楚如何使表单优先于按钮:)

【问题讨论】:

标签: vb.net


【解决方案1】:

像这样为您的表单覆盖 ProcessCmdKey():

Public Class Form1

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
        Select Case keyData
            Case Keys.Up
                Debug.Print("Up")
                Return True ' <-- If you want to suppress default handling of arrow keys

            Case Keys.Right
                Debug.Print("Right")
                Return True ' <-- If you want to suppress default handling of arrow keys

            Case Keys.Down
                Debug.Print("Down")
                Return True ' <-- If you want to suppress default handling of arrow keys

            Case Keys.Left
                Debug.Print("Left")
                Return True ' <-- If you want to suppress default handling of arrow keys

        End Select
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function

End Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2023-03-15
    • 1970-01-01
    • 2015-08-14
    相关资源
    最近更新 更多