【发布时间】:2013-08-11 15:26:19
【问题描述】:
我仍在摆弄 MS Access,这让我发疯。我当前的问题如下:我将记录导航栏重新创建为子窗体并将其添加到我的主窗体中。此代码用于子表单中
...
Private WithEvents frmParent As Access.Form
...
Private Sub Form_Load()
...
Set frmParent = Me.Parent
frmParent.OnCurrent = "[Event Procedure]"
frmParent.Recordset.MoveLast
frmParent.Recordset.MoveFirst
...
End Sub
Private Sub frmParent_Current()
If frmParent.CurrentRecord = frmParent.Recordset.Count Then
Me.butNext.Enabled = False
Else
Me.butNext.Enabled = True
End If
If frmParent.CurrentRecord = 1 Then
Me.butPrevious.Enabled = False
Else
Me.butPrevious.Enabled = True
End If
End Sub
...
Other MainForm Events...
由此产生了一些问题。首先: MainForm 中的任何事件都不会触发。第二:有时(尤其是在错误之后)vba 会丢失对主窗体的引用。我可以将 Win32 API 解决方法与 CopyMemory 一起使用,但这似乎有点过头了。
我一如既往地感谢您的帮助。
非常感谢
乔恩
【问题讨论】:
-
当您说事件不会触发时,您是指仅在父表单中吗?甚至在子表单中?如果它只是在父表单中,我并不感到惊讶,因为您正在捕获子表单中的所有事件。
-
我不得不问你为什么决定把这些导航按钮放在一个子表单中?如果您将它们直接放在表单上,您的生活会更简单,也许使用 Rectangle 将它们分组(视觉上)。
-
因为我有很多表格,我希望有相同的行为并查看所有表格,所以我决定这样做。 @EMett:只有主窗体中的事件,子窗体按预期工作。
-
我认为,就像我在之前的评论中所写的那样,事件不是广播的,而是被触发到连接到它们的代码,在这种情况下是子表单。因此主窗体没有收到它们。