如何返回表单最高父级的名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何返回表单最高父级的名称相关的知识,希望对你有一定的参考价值。

我有子表单,有时用父表单打开,有时用父表单和祖父表单打开。

如何找到子表单当前最高父级的名称?

答案

我建议使用事件而不是依赖于一串对象层次结构。所以subform决定它需要关闭并引发CloseRequested事件。然后,任何形式开放subform可以采取行动。这个动作可能是试图关闭自己(如果它成功那么好,它是父母)或沿着链传递它。

下面的示例不使用事件,但在子窗体上单击按钮时将关闭父窗体。

'command button on your subform
Private Sub Command0_Click()
    Dim frm As Form
    Set frm = FindHighestAncestor(Me)
    DoCmd.Close acForm, frm.Name
End Sub

Public Function FindHighestAncestor(frm As Form)
    If IsHighestLevelForm(frm) Then
        Set FindHighestAncestor = frm
    Else
        If TypeOf frm.Parent Is Form Then
            Set FindHighestAncestor = FindHighestAncestor(frm.Parent)
        Else
            Set FindHighestAncestor = frm
        End If
    End If

End Function

Public Function IsHighestLevelForm(frm As Form) As Boolean
    Dim f As Form
    For Each f In Application.Forms
        If f.Name = frm.Name Then
            IsHighestLevelForm = True
            Exit Function
        End If
    Next
    IsHighestLevelForm = False
End Function
另一答案

如果这是你唯一的两个场景,你可以做两件事。检查Mainform是否打开或检查ParentSubform1属性。

以上是关于如何返回表单最高父级的名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有父级的情况下居中 DIV? [复制]

创建 API 网关资源的 Terraform 错误抱怨具有相同父级的另一个资源已经具有此名称

如何以样式访问控件父级的属性

css如何让子元素不受父级的父级的overflow:hidden影响

具有多个父级的 Oracle 分层查询

使用后退按钮导航到 Android Activity 父级的父级 [重复]