My.Forms 对象

提供了用于访问当前项目中声明的每个 Windows 窗体实例的属性。

注解

My.Forms 对象提供当前项目中每个窗体的实例。 该属性的名称与该属性所访问的窗体的名称相同。

可使用窗体的名称访问 My.Forms 对象提供的窗体,而无需限定。 由于属性名称与窗体的类型名称相同,因此可以访问窗体,就像它具有默认实例一样。 例如,My.Forms.Form1.Show 等效于 Form1.Show

My.Forms 对象只公开与当前项目关联的窗体。 它不会提供对引用 DLL 中声明的窗体的访问权限。 若要访问 DLL 提供的窗体,必须使用窗体的限定名称,格式为 DllName.FormName。

可使用 OpenForms 属性获取应用程序所有打开的窗体的集合。

对象及其属性仅适用于 Windows 应用程序。

属性

My.Forms 对象的每个属性都提供对当前项目中窗体实例的访问权限。 属性的名称与属性访问的窗体的名称相同,并且属性类型与窗体类型相同。

注意

如果存在名称冲突,则用于访问窗体的属性名称为 RootNamespace_Namespace_FormName。 例如,请考虑以下两个名为 Form1. 的窗体。如果其中一个窗体位于根命名空间 WindowsApplication1 中,另一个位于命名空间 Namespace1 中,则可以通过 My.Forms.WindowsApplication1_Namespace1_Form1 访问该窗体。

My.Forms 对象提供对启动时创建的应用程序主窗体实例的访问权限。 对于所有其他窗体,My.Forms 对象在访问窗体时创建并存储该窗体的新实例。 后续访问该属性的尝试将返回窗体的该实例。

可以通过将 Nothing 分配给该窗体的属性来处置该窗体。 属性资源库调用窗体的 Close 方法,然后将 Nothing 分配给存储的值。 如果将除 Nothing 之外的任何值分配给属性,则资源组会引发 ArgumentException 异常。

可以使用 IsIsNot 运算符测试 My.Forms 对象的属性是否存储窗体的实例。 可以使用这些运算符检查属性的值是否为 Nothing

注意

通常,IsIsNot 运算符必须读取属性的值才能进行比较。 但是,如果属性当前存储 Nothing,该属性便会创建窗体的新实例,然后返回该实例。 但是,Visual Basic 编译器会以不同的方式处理 My.Forms 对象的属性,并允许 IsIsNot 运算符无需更改属性的值即可检查属性的状态。

示例

此示例更改默认 SidebarMenu 窗体的标题。

Sub ShowSidebarMenu(ByVal newTitle As String)
    If My.Forms.SidebarMenu IsNot Nothing Then
        My.Forms.SidebarMenu.Text = newTitle
    End If
End Sub

若要使此示例正常工作,项目必须具有名为 SidebarMenu 的窗体。

此代码仅在 Windows 应用程序项目中工作。

要求

可用性(按项目类型)

项目类型 可用
Windows 应用程序
类库
控制台应用程序
Windows 控件库
Web 控件库
Windows 服务
网站

另请参阅