如何在Windows窗体应用程序中获取所有窗体

时间:2015-06-11 15:37:59

标签: winforms

我有一个Windows窗体应用程序。 我希望得到应用程序的所有形式,但我刚刚发现了函数Application.OpenForms。 此函数返回所有表单都打开。 但我希望在该应用程序中获得所有表单。 是否有任何函数可以获取但不添加到FormsColection以创建像此解决方案https://support.microsoft.com/en-us/kb/815707这样的新表单? 谢谢!

1 个答案:

答案 0 :(得分:1)

"应用程序具有的所有表单"通常意味着对从Windows.Forms.Form类继承的程序集中的所有类型使用反射。

Application.OpenForms仅跟踪已打开的表单,不一定是那些已实例化且未打开的表单。

您真正需要做的是在实例化表单对象时跟踪所有表单。请参阅以下代码:

Public Class Form1
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Globals.InstantiatedForms.Add(Me)
    End Sub
End Class

Public Module Globals
    Public InstantiatedForms As New List(Of Windows.Forms.Form)
End Module