VB键盘控制无响应
代码:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 87 And Timer2.Enabled = True Then
Label1.Top = Label1.Top - 150
End If
If KeyCode = 83 And Timer2.Enabled = True Then
Label1.Top = Label1.Top + 150
End If
If KeyCode = 65 And Timer2.Enabled = True Then
Label1.Left = Label1.Left - 150
End If
If KeyCode = 68 And Timer2.Enabled = True Then
Label1.Left = Label1.Left + 150
End If
If Label1.Top = Label10.Top Then
MsgBox "你赢了!"
Label2.Caption = "你赢了!"
Timer2.Enabled = False
End If
End Sub
不响应的原因可能是窗体未获得焦点。可能是窗体上设置了CommandButton按钮的原因,假如窗体上添加了Command1、Command2二个按钮,将其Enabled设为False,这样就可以截获键盘的代码了。参考如下:
Private Sub Command1_Click()
Timer2.Interval = 1000
Timer2.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Timer2.Enabled = False Then Exit Sub
'A、D、S、W不分大小写
If KeyCode = 87 Or KeyCode = 119 Then
Label1.Top = Label1.Top - 150
End If
If KeyCode = 83 Or KeyCode = 115 Then
Label1.Top = Label1.Top + 150
End If
If KeyCode = 65 Or KeyCode = 97 Then
Label1.Left = Label1.Left - 150
End If
If KeyCode = 68 Or KeyCode = 100 Then
Label1.Left = Label1.Left + 150
End If
If Label1.Top = Label10.Top Then
MsgBox "你赢了!"
Label2.Caption = "你赢了!"
Timer2.Enabled = False
Command1.Enabled = True
Command2.Enabled = True
End If
End Sub
你设置Form的KeyPreview为True后在试试。