formk中KEYDOWN不好用,已经修改了keypreview=TRUE

softgq 2008-08-22 11:42:33
如题,VB中准备在FORM加上KEYDOWN事件,但不好用,并且keypreview已经设置为TRUE,现在还是一点反应没有,还有什么要修改的吗?
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fighterhht 2008-08-23
  • 打赏
  • 举报
回复

Private Sub From_KeyDown(KeyCode As Integer, Shift As Integer)

Dim blnCtrlDown as Boolean
blnCtrlDown = ((Shift And vbCtrlMask) > 0)

MsgBox KeyCode
If (KeyCode = vbKeyA) And (blnCtrlDown) Then
Command1_Click
End If

End Sub
tongnaifu 2008-08-23
  • 打赏
  • 举报
回复
Command1_Click
修改为
Command1.value=true
softgq 2008-08-23
  • 打赏
  • 举报
回复
这是我的KEYDOWN代码:
Private Sub From_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
If KeyCode = Asc("A") And Shift = vbCtrlMask Then
Command1_Click
End If
End Sub

现在这个是CTRL+A。
softgq 2008-08-23
  • 打赏
  • 举报
回复
这是我的KEYDOWN代码:
Private Sub From_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
If KeyCode = Asc("A") And Shift = vbCtrlMask Then
Command1_Click
End If
End Sub

现在这个是CTRL+A。
softgq 2008-08-23
  • 打赏
  • 举报
回复
哈哈,是我写错了,难怪难怪。
dmgywan 2008-08-23
  • 打赏
  • 举报
回复

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) '是form不是from

Dim blnCtrlDown as Boolean
blnCtrlDown = ((Shift And vbCtrlMask) > 0)

'MsgBox KeyCode 最好去掉, 否则会影响双键的事件~~
If (KeyCode = vbKeyA) And (blnCtrlDown) Then
Command1_Click
End If

End Sub
dmgywan 2008-08-23
  • 打赏
  • 举报
回复

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) '是form不是from

Dim blnCtrlDown as Boolean
blnCtrlDown = ((Shift And vbCtrlMask) > 0)

MsgBox KeyCode
If (KeyCode = vbKeyA) And (blnCtrlDown) Then
Command1_Click
End If

End Sub
dmgywan 2008-08-23
  • 打赏
  • 举报
回复
Private Sub From_KeyDown(KeyCode As Integer, Shift As Integer)
改为
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
softgq 2008-08-23
  • 打赏
  • 举报
回复
谢谢lsftest,我建了一个空白的窗体是好用了。

但一般在实际的应该中,就是在当前应用程序上想判断比如按Ctrl+A会么什么事件里写呢?不是窗体的话,在什么里写呢,不会每个控件上面都要加处理吧。
lsftest 2008-08-23
  • 打赏
  • 举报
回复
而keypreview可以使窗体先于任何控件捕捉到击键的,所以有效.但注意如果是空白窗体,会反过来,keypreview失效,keydown有效.
lsftest 2008-08-23
  • 打赏
  • 举报
回复
当窗体上有控件的时候,输入焦点就不会是form,所以你在form的keydown事件里写是没用的.你试试建一个空白的form再试试就应该可以了.
softgq 2008-08-23
  • 打赏
  • 举报
回复
呵呵,现在有意思了,KeyDown还是不好用,但KeyPress是好用的,这是为什么啊?
Private Sub From_KeyDown(KeyCode As Integer, Shift As Integer)
'Dim blnCtrlDown As Boolean
'blnCtrlDown = ((Shift And vbCtrlMask) > 0)
Command1.Value = True

MsgBox KeyCode
If KeyCode = Asc("A") And Shift = vbCtrlMask Then
Command1_Click
End If
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
'MsgBox "按下了ctrl+enter键!"
If KeyAscii = 10 Then
MsgBox "按下了ctrl+enter键!"
End If
End Sub
fighterhht 2008-08-23
  • 打赏
  • 举报
回复
你准备捕捉什么键?

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧