在vb中Select Case KeyAscii代码一有timer就无效了

来源:百度知道 编辑:UC知道 时间:2024/05/02 18:57:54
Dim a As Integer
Private Sub Command1_Click()
Timer2.Enabled = True
Timer3.Enabled = True
If Shape1.Top >= 3480 Then Shape1.Top = 3480
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 87, 119 'w或者W
Shape1.Top = Shape1.Top - 200
Case 83, 115 's或者S
Shape1.Top = Shape1.Top + 200
Case 65, 97 'a或者A
Shape1.Left = Shape1.Left - 200
Case 68, 100 'd或者D
Shape1.Left = Shape1.Left + 200
End Select
If Shape1.Left <= 0 Then Shape1.Left = 0
If Shape1.Left >= 6600 Then Shape1.Left = 6600
If Shape1.Top <= 0 Then Shape1.Top = 0
If Shape1.Top >= 3480 Then Shape1.Top = 3480

End Sub

Private Sub Form_Load()
a = 30
Timer2.Enabled = False
Timer3.Enabled = False
End Sub

Private Sub Timer2_Timer()
a = a - 1
Label1.Caption = a
End Sub

这段代码一遇到timer就会无效,键盘按了也没有反应。原本按awsd

不是因为有了timer,而是因为按下了command,造成了焦点跑到按钮上,窗体没得得到键盘的动作了..

可以添加一行代码:

Private Sub Command1_KeyPress(KeyAscii As Integer)
Form_KeyPress (KeyAscii)
End Sub

我估计是因为窗口失去焦点
你把form1的keyprewiew属性设置为true,我试过了,可行。
(我试了试,楼上的好像不行俄)

遇到这种情况我一般都用键盘钩子来实现按键功能。。。