【发布时间】:2011-02-16 04:27:39
【问题描述】:
我有一个包含两个子表单的表单(在单独的标签页上)。这是 Access 中的一个 MDB 项目 2003.
当它最初打开时,活动子窗体上的 Form_Current 会触发一次,因为 它应该。
但是当您移动到另一条记录(即从主窗体)时,它会触发 活动子窗体上的 Form_Current 4 次。然后随后的记录动作 导致 Form_Current 触发 2 次。这很痛苦,因为子表单 有很多被移动和/或隐藏的字段,所以它会跳来跳去 每个 Form_Current,更不用说速度慢了。
我通过 DoCmd.OpenForm 使用过滤器打开表单(实际上它发送 过滤器通过 OpenArgs)。 FilterOn 只设置一次,在 Form_Open 上 主窗体,从不在子窗体中。 Form_Current 没有被显式调用 代码中的其他任何地方。
当我在 Form_Current 第一次触发移动时查看调用堆栈时, 它看起来像:
my_subform.Form_Current
[<Debug Window>]
my_subform.Form_Current
所以看起来 Form_Current 中的某些东西正在触发另一个 Form_Current 事件。但仅在第一次记录移动时。
Form_Current 中的代码有些复杂,涉及自定义类和 事件回调,但一般不会触及表格数据。我唯一的事 可以认为可能触发 Form_Current 是它检查 OldValue 表单控件 - 这可能是导致它的原因吗?
或者还有什么想到的?
谢谢。
埃里克
【问题讨论】:
-
这是一个无法解决的已知问题——子表单的 OnCurrent 事件总是先出现两次。除了使用计数器来防止代码再次触发之外,您无能为力。
标签: ms-access forms ms-access-2003