为什么在调试时,KeyPress 与  KeyUp事件都设置了中断,但是调试时,只有KeyPress 运行,而KeyUp不运行(实际运行了,但是程序在在那儿停)

解决方案 »

  1.   

    事件响应顺序应该是:KeyDown、KeyPress、KeyUp
    你可以测试如下代码,看看Debug.Print的先后就知道了
    Option Explicit
    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        Debug.Print "KeyDown"
    End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
        Debug.Print "KeyPress"
    End SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
        Debug.Print "KeyUp"
    End Sub
      

  2.   

    在键盘鼠标事件中不要设置断点、弹出msgbox,会导致事件丢失的。
      

  3.   

    应该像2楼说的那样,用debug调试,或者干脆写文件记录日志。
      

  4.   

    你自己先弄清楚。 -_-!!!
    在IDE下运行时,程序窗体中的控件捕获到KeyPress()事件后被中断时,前台窗口立即切换到IDE窗口了。
    它就再也无法触发KeyUp()事件了(因为它切换完窗口时,你按下的Key还没UP)。
      

  5.   

    你真要跟踪这两个事件的代码,你可以先把KeyPress()的代码调试好。
    然后取消KeyPress()里面的断点,就能捕获到KeyUp()事件了。
      

  6.   

    KeyDown、KeyPress、KeyUp 都属于焦点相关事件。
    中断后 VB-IDE 获得焦点,程序失去焦点后就不会有后续事件了。
    调试焦点相关事件要用 Debug.Print,不要用中断。