使用表单 B 启用表单 A 的对象

Enable object of Form A using Form B

我正在使用此代码在我的 form.load 事件中禁用表单 [A]

Public Sub disableAll(ByVal root As Control)
    For Each root In root.Controls
        If Not root.Name.ToString = "cmdLogin" Then
            root.Enabled = False

        End If
    Next
End Sub

使用此代码disable(Me)

它按预期工作。

现在的问题是启用它,我有这段代码可以使用表单 [B] 中的命令按钮启用表单 [A] 中的对象

   Public Sub enableAll(ByVal root As Control)
        For Each root In root.Controls
            If Not root.Name.ToString = "cmdLogin" Then
                root.Enabled = True
            Else
                root.Hide()
            End If
        Next
    End Sub

我用了enableAll(frmMain),enableAll(my.Forms.frmMain),enableAll(WindowsApplication1.frmMain)

但是其中 none 工作,我没有收到任何错误消息,并检查我的 VB.Net 2010 的 Intermediate WindowfrmMain.Menustrip1.Enabled.Tostring 设置为 True,而当我在 frmMain 中检查它,启用的 属性 设置为 false,这是为什么?

在 FormB 中,您需要使用当前显示的 FormA (frmMain) 的实例。您正在使用 frmMain 的默认实例(MS 做出的一个非常令人困惑和反 oop 的设计选择)。

您可以检索显示的 frmMain 实例,查看 Application.OpenForms 集合

在调用您的 enableAll 运行 此代码之前

Dim f = Application.OpenForms("frmMain")
If f IsNot Nothing then
    enableAll(f)
End If