Form中三个控件的顺序是这样的 txtDriver-->DTPFeeStart-->DTPFeeEnd
我设置了Form的KeyPreview为True
定义了
Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        SendKeys ("{TAB}")
    End If
End Sub
因为界面中有DTPicker 控件,好像是不响应KeyPress事件,响应KeyUp事件。所以定义了
Private Sub DTPFeeStart_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
        DTPFeeEnd.SetFocus
    End If
End Sub
结果郁闷的是在txtDriver中回车以后,鼠标在DTPFeeStart短暂的停留了一下后又马上跳到了DTPFeeEnd上。
小弟我搞不清楚什么道理了,还请各位前辈赐教,谢谢了!

解决方案 »

  1.   

    在你按回车的时候,发送了Tab键,所以光标回转移
      

  2.   

    注意TabIndex順序
    然后
        If KeyCode = 13 Then
            DTPFeeEnd.SetFocus
        End If
    後.又執行了這個:
        If KeyAscii = 13 Then
            SendKeys ("{TAB}")
        End If
      

  3.   

    在txtDriver中回车就是模拟发送了Tab应该跳到下一个DTPFeeStart上,然后DTPFeeStart的回车又激活了KeyUp事件,怎么会在txtDriver中回车后同时激活TAB后又在DTPFeeStart上激活KeyUp??
      

  4.   

    去掉 Key_Press 代码:Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
        If KeyCode = 13 Then
            SendKeys "{TAB}"'        Select Case Me.ActiveControl.Name
    '            Case "txtDriver"
    '                DTPFeeStart.SetFocus
    '            Case "DTPFeeStart"
    '                DTPFeeEnd.SetFocus
    '        End Select    End If
    End Sub注意,在没有打补丁的 Win2k 系统中,在回车后发送 Tab 会造成键盘锁死。你可以用下面注释掉的代码来替代。或者使用 API 发送键码消息。
      

  5.   

    我请教下来是DTPicker的KeyUp和KeyDown事件的问题,有兴趣的朋友可以去试验一下。
    不管怎么样,还是谢谢楼上两位的回答了。
      

  6.   

    of123()  高啊! 用了KeyUp果然好用阿! DTP的KeyUp事件也不用写了!!高!
      

  7.   

    >> 在没有打补丁的 Win2k 系统中,在回车后发送 Tab 会造成键盘锁死這句話說得好,我之前也是這樣,弄了好久都沒找到原因....