代码之家  ›  专栏  ›  技术社区  ›  Mr.J

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

  •  0
  • Mr.J  · 技术社区  · 6 年前

    我正在使用此代码禁用form.load事件上的form[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)

    但它们都不起作用,我没有收到任何错误信息,并且检查我的 Intermediate Window 在我的VB.Net 2010中, frmMain.Menustrip1.Enabled.Tostring 设置为True,而当我在frmMain中签入时,enabled属性设置为false,这是为什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Steve    6 年前

    在FormB中,您需要使用当前显示的FormA(frmMain)实例。您使用的是frmMain的默认实例(MS制作的一个非常混乱且反oop的设计选项)。

    您可以在Application.OpenForms集合中检索显示的frmMain实例

    在打电话给你之前 使能 运行此代码

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