Pow*_*ser 8 ms-access vba access-vba ms-access-2010
我有一个带有文本框的Access表单,该表单允许重复键入数字,按Enter键,并让脚本执行操作.对于速度,该字段应在DoStuff()完成后保持焦点.
但是,虽然我确定它DoStuff()已经运行,但焦点始终转到Tab键顺序中的下一个字段.这就像是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
Run Code Online (Sandbox Code Playgroud)
tec*_*tle 14
如果你看一下可以改变焦点的按键的事件顺序,你可以看到它始终遵循这种模式:
KeyDown ? BeforeUpdate ? AfterUpdate ? Exit ? LostFocus
Run Code Online (Sandbox Code Playgroud)
你可以在那里的任何地方重新设置焦点,它仍然会遵循模式.所以我们需要告诉它停止遵循模式.替换你Me.MyFld.SetFocus的DoCmd.CancelEvent,它应该解决你的问题.基本上,这只是你踢出上面的图案,所以Exit和LostFocus事件永远不会触发...
解决方法是将焦点移动到另一个控件,然后再返回到第一个控件.像这样:
Private Sub MyFld_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
DoStuff
Me.anotherControl.SetFocus
Me.MyFld.SetFocus
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36591 次 |
| 最近记录: |