我有一个带有两个子表单的表单(在单独的标签页上)。这是 Access 2003 中的一个 MDB 项目。
当它最初打开时,活动子窗体上的 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 - 这会导致它吗?
或者还有什么想到的?
谢谢。
埃里克