松子日本料理自助团购:VB中响应键盘事件的方法

来源:百度文库 编辑:高考问答 时间:2024/04/28 19:45:08
我用VB做了一个小游戏,其中需要用到在窗体中响应键盘事件,我用了Form_KeyDown方法,不过窗体中有按扭,Form_KeyDown就不好用了,请教如何解决。
我是想用左右箭头键控制窗体上一个image的移动,代码如下:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 39 Then '这里确实是有判断条件的,呵呵
Set Image1.Picture = ImageList1.Overlay("a2", "a1")
Image1.Left = Image1.Left + 600
ElseIf KeyCode = 37 Then
Set Image1.Picture = ImageList1.Overlay("a1", "a2")
Image1.Left = Image1.Left - 600
End If
End Sub
其实问题就出在按扭抢占SETFOCUS方法,不过现在我已经解决了,我是用一种笨法绕过去了,但使用者看不出来,要是各位有什么更好的办法就更谢谢了,当学习了,呵呵。

把窗体的KeyPreview属性改为true即可。
我实验过以后回答的,不知道你的Form_KeyDown过程里是不是有什么判断条件,你可以在Form_KeyDown第一行加一个
MsgBox "OK"
试试,如果有提示,那可能是你的判断条件有问题,否则,我就帮不了你了。VB提供KeyPreview属性,就是为了解决你遇到的这个问题的。

另外请确定实验的时候,窗体是否处于激活状态,在窗口非激活状态是不能这么做的,那样需要用HOOK技术了。

我不知道你说的“Form_KeyDown就不好用了”具体是什么意思,“不好用”为何意?

应该来说,一楼的答案可以解决你的问题。

那就在第一焦点控件上的KEYDOWN事件中加代码呗