我有一个带文本框的Access窗体,该文本框用于允许重复键入数字,按Enter键以及让脚本执行操作。为了提高速度,在完成DoStuff()
之后,该字段应保持焦点。
但是,虽然我确定DoStuff()
已运行,但是焦点始终转到制表符顺序中的下一个字段。就像Me.MyFld.SetFocus
被忽略了。DoStuff()
完成后,如何保持对这一领域的关注?
Private Sub MyFld_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
DoStuff
Me.MyFld.SetFocus
End If
End Sub
最佳答案
如果查看the order of events for a keypress that would change focus,您会发现它始终遵循以下模式:
KeyDown → BeforeUpdate → AfterUpdate → Exit → LostFocus
您可以将焦点重新设置在该位置上的任何位置,并且仍将继续遵循该模式。因此,我们需要告诉它停止遵循该模式。将您的
Me.MyFld.SetFocus
替换为DoCmd.CancelEvent
,它应该可以解决您的问题。基本上,这只是将您踢出上述模式,因此Exit
和LostFocus
事件永远不会触发...关于ms-access - 为什么我的.setfocus被忽略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18990437/