Visual Basic中的KeyPress事件?

问题描述 投票:1回答:6

我认为这是可能的,但我不知道......我想检查何时按下按键A将玩家向左移动,但现在只是一个消息框。

这是我在互联网上找到的所有代码,它没有用......

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    If e.KeyCode = Keys.A Then
        MsgBox("Left")
    End If
End Sub

当你在文本框中输入内容时我不会问你怎么做,我问的是当你按一个键时如何运行一个事件。

vb.net
6个回答
4
投票

试试这个...

 Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If Asc(e.KeyChar) = 97 Or Asc(e.KeyChar) = 65 Then
        MsgBox("hello")
    End If
End Sub

这应该工作。 97是'a',65是ASCII中的'A'。


0
投票

试试这个

Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
 If e.KeyCode = Keys.A Then
    MsgBox("Left")
End Sub

要么

Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
     Handles textBox1.KeyDown
   If e.KeyCode = Keys.A Then
        MsgBox("Left")
     end if
    End Sub

0
投票
  1. 您可能希望将表单的KeyPreview属性设置为true。这样做可确保表单即使其中一个子控件也可以查看所有关键事件
  2. 使用KeyEventArgs.KeyData属性查看按下了哪个键。
  3. KeyCode , KeyData and KeyValue仅在KeyUp和KeyDown活动中是System.Windows.Forms.KeyEventArgs的成员。

0
投票

他们实际上是从VB6中简化了这一点。使用VB 2017的新方法是......

Private Sub Textbox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtProblem.KeyPress
    If e.KeyCode = "a" or e.KeyCode = "A" Then
        MsgBox("Left")
    End If
End Sub

0
投票

所以,我向正确的方向迈出了一步,也许它会有所帮助。我试图在乒乓球比赛中控制球员到球员,发现如果文本框1突出显示或“有焦点”,那么这些命令将执行,我可以在屏幕上移动球拍。问题是还有一个文本框填满了屏幕一角的字母,因为这种情况我不知道如何摆脱它。也许它会有用。

私人子

Textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

    If Asc(e.KeyChar) = 97 Then 'a
        Paddle.Location = New Point(Paddle.Location.X - 10, Paddle.Location.Y)
    End If
    If Asc(e.KeyChar) = 119 Then 'w
        Paddle.Location = New Point(Paddle.Location.X, Paddle.Location.Y - 10)
    End If
    If Asc(e.KeyChar) = 100 Then 'd
        Paddle.Location = New Point(Paddle.Location.X + 10, Paddle.Location.Y)
    End If
    If Asc(e.KeyChar) = 115 Then 's
        Paddle.Location = New Point(Paddle.Location.X, Paddle.Location.Y + 10)
    End If
End Sub

此外,您可以使用此命令将焦点从另一个事件中提供给文本框

Public Sub ControlSetFocus(control As Control)

    If Control.CanFocus Then
        control.Focus()
    End If

End Sub

0
投票

这适合我

If e.KeyChar = Convert.ToChar("a") Then
    MsgBox(Convert.ToChar("a") +"enter key pressed ")
End If

你也可以在“”中使用数字和大写

© www.soinside.com 2019 - 2024. All rights reserved.