我有一个带文本框的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,它应该可以解决您的问题。基本上,这只是将您踢出上述模式,因此ExitLostFocus事件永远不会触发...

关于ms-access - 为什么我的.setfocus被忽略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18990437/

10-10 20:54