【发布时间】:2019-06-17 14:30:06
【问题描述】:
当 me.myControl 获得焦点并且我尝试设置时,Ms-access VBA 会引发错误
me.myControl.visible=false
所以我使用 Screen.ActiveControl 来判断 myControl 是否有焦点:
if me.myControl.name = Screen.ActiveControl.name then
me.otherControl.SetFocus
end if
me.myControl.visible=false
不幸的是,似乎每个子表单都可以有自己的“ActiveControl”。我没有找到一种方法来确定它是哪一个。所以我必须做这个解决方法:
on error goto setMyfocus
me.subform.Form!myCtrlInSubform.visible = false
exit function
setMyfocus:
me.subform.Form!otherCtrlInSubform.SetFocus
me.subform.Form!myCtrlInSubform.visible = false
exit function
显然这不是一个好的解决方案。那么有没有办法在不引发错误的情况下确定子表单中的哪个控件具有焦点?
【问题讨论】:
-
为什么说
on error不好?这类似于 try...catch。您预计会发生错误,然后您会考虑可能导致错误的不同场景。在 ms 访问中可能看起来很脏,但您正在处理发生的异常。