将form得keypreview设置为ture
可以在 keypress事件中捕获一些按键,但是按enter键不激活keypress事件
为什么阿

解决方案 »

  1.   

    msdn上说明:一些控件能够拦截键盘事件,以致窗体不能接收它们。这样的例子有:CommandButton 控件有焦点时的 ENTER 键、以及焦点在 ListBox 控件上时的方向键。
    能不能不管焦点在那里?都能响应enter键
      

  2.   

    可以捕获到啊,我测试的代码是这样的,你看看
    Option ExplicitPrivate Sub Form_KeyPress(KeyAscii As Integer)
    MsgBox "我按了enter"
    End SubPrivate Sub Form_Load()
    Form1.KeyPreview = True
    End Sub
      

  3.   

    to:3661512 是这样的,我的form上有其他一些按钮,如果这些按钮有焦点了,就不行了
               我的意思是不管焦点在什么控件上,都能捕获:)
      

  4.   

    那么就在每个按钮的 KeyPress 事件中
    Form_KeyPress(Keyascii)  这样来触发 Form 的事件
      

  5.   

    怎么问了两次,算了,那就说两次吧。
    'HookModule
    Option Explicit
    Public Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Public strKeyName As String * 255
    Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    Public hnexthookproc As Long
    Public Const HC_ACTION = 0
    Public Const WH_KEYBOARD = 2
    Public prelParam As Long
    Public prewParam As Long
    Public psd As New CollectionPublic Sub UnHookKBD()
        If hnexthookproc <> 0 Then
            UnhookWindowsHookEx hnexthookproc
            hnexthookproc = 0
        End If
    End SubPublic Function EnableKBDHook()
        If hnexthookproc <> 0 Then Exit Function
        hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
        If hnexthookproc <> 0 Then
        EnableKBDHook = hnexthookproc
     '   Form1.List1.AddItem EnableKBDHook
        End If
        
    End FunctionPublic Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long    '这三个参数是固定的,不能动,而MyKBHFunc这个名称只要和
        'SetWindowsHookex()中 AddressOf後的名称一样便可,不一定叫什麽
        'wParam 是传入按了哪个key的virtual-key code
        '如果您将以下的两行un则所有键盘的输入皆没有作用
        'MyKBHFunc = 1 '吃掉信息
        MyKBHFunc = 0 '信息要处理
        If iCode < 0 Then
            MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
            'Form1.List1.AddItem "haha" & "    " & wParam & "    " & lParam
            Exit Function
        End If
        MyKBHFunc = 1               '在这个Hook便吃掉这个信息
        If wParam = 13  Then
              msgbox "you input the enter"
        End If
        MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
    End Function
      

  6.   

    to:Huaraco(孤星之旅) 
    能不能结合我的问题给一个实际使用的例子啊!
    谢谢了  :)