首页 文章

如何从主窗体内部引用子窗体中对象的事件

提问于
浏览
1

想象一下这样一种形式,为了实现这一目的,它只包含一个需要相互镜像的子表单和一个文本框 .

我试图通过将文本框中的 Control Source 设置为子窗体中字段的值来实现此目的,这使它们相互镜像,但文本框不可编辑,因此这是一个不合适的解决方案 .

我决定尝试的下一件事是在两个控件上使用 AfterUpdate 事件来运行设置另一个控件的值的代码 .

对于文本框来说这很容易:

'Set value of Notes field on subform whenever value of the corresponding textbox 
Private Sub Notes_Textbox_AfterUpdate()
    Me.subform.Form![Notes] = Me.Notes_Textbox.Text
End Sub

但是,这对于子表单字段来说并不那么简单 . 我不知道如何在子窗体中的字段上引用事件,这样仍然允许我引用该子窗体之外的控件 .

作为演示,我需要一种方法来做到这一点:

Private Sub subform_Notes_AfterUpdate()
    Me.Notes_Textbox.Text = Me.subform.Form![Notes]
End Sub

我可以访问子窗体范围内的子窗体字段AfterUpdate事件,但如果我这样做,那么我无法访问文本框,因为它是在主窗体中,而不是子窗体 .

因此,我需要一种方法在主窗体范围内的子窗体中的字段上定义事件函数,或者使文本框成为子窗体的一部分,同时保持子窗体在数据表视图中打开的能力 .

1 回答

  • 1

    不确定我是否得到了整个问题(数据表视图如何发挥作用?),但这应该做你想要的:

    (在子表格中)

    Private Sub Notes_AfterUpdate()
        Me.Parent!Notes_Textbox.Value = Me![Notes].Value
    End Sub
    

    从评论编辑:到目前为止,最简单的解决方案是连续形式而不是子表单中的数据表 .

    您可以在“详细信息”部分中使用两个文本框,一个单行框,在表单页眉或页脚中使用一个大文本框 . 两者都具有相同的控制源,并在编辑另一个时自动更新 . 无需代码 .

    如果它必须是子表单数据表,您可以使用类似的方法:将主表单绑定到相同的记录源,并在子表单的 On Current 中,将主表单移动到相同的当前记录 .

相关问题