VB.NET 无法调用另一个隐藏窗体中的按钮,希望能够解决这个问题。

创建两个窗体。第一个窗体上有四个按钮,可以显示或隐藏第二个窗体,可以调用第二个窗体上的按钮。第二个窗体上有一个按钮,按钮的功能是产生一个信息框。当第二个窗体显示时,第一个窗体的按钮可以成功调用第二个窗体上的按钮,产生一个信息框。当第二个窗体隐藏时,就无法功调用第二个窗体上的按钮。
这是一个简化的例子,实际上,被调用的第二个窗体上的按钮还要去调用其他的控件。
现在正在使用的凑合的办法是把第二个窗体放在正在显示的第一个窗体后面去遮蔽起来。需要的时候把第二个窗体放到前面来。
对可见的按钮,不可见的按钮的调用也是一样。现在正在使用的凑合的办法是把按钮放在一个标签(label)后面去遮蔽起来。需要的时候把按钮放在标签(label)前面来。

窗体1的代码。
Friend Class Form1
Inherits System.Windows.Forms.Form
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
'隐藏窗体,使窗体按钮不可见。
Form2.Hide()
Me.Button4.Visible = False
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    '显示窗体,使窗体按钮可见。
    Form2.Location = New Point(200, 300)
    Form2.Show()
    Form2.Command2.Visible = True

    Me.Button4.Visible = True

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    '按钮的功能
    MsgBox("窗体按钮----")
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '调用窗体的按钮
    Form2.Command2.PerformClick()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '调用窗体的按钮
    Me.Button4.PerformClick()

End Sub

End Class
窗体2的代码。
Friend Class Form2
Inherits System.Windows.Forms.Form
Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
'窗体按钮的功能。
MsgBox("窗体按钮")
End Sub
End Class

Public Class Form2

    '暴露出事件'
    Public Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
        MsgBox("窗体按钮")
    End Sub

End Class
Public Class Form1

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        '直接调用事件'
        Form2.Command2_Click(sender, e)

        Me.Button4.Visible = True
    End Sub

End Class

按钮定义成public的,并且确保窗体启动。就可以访问到。
用 application.openforms("form2") 可以得到窗体