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