My.Forms オブジェクト (Visual Basic)

現在のプロジェクト内で宣言されている各 Windows フォームのインスタンスにアクセスするためのプロパティを提供します。

解説

My.Forms オブジェクトは、現在のプロジェクト内の各フォームのインスタンスを提供します。 プロパティの名前は、そのプロパティのアクセス先のフォームと同じ名前になります。 フォームをプロジェクトに追加する方法については、「方法 : プロジェクトに Windows フォームを追加する」を参照してください。

My.Forms オブジェクトによって提供されるフォームにアクセスするには、そのフォームの名前を修飾子なしで使用します。 このプロパティ名はフォームの型名と同じになるので、まるで既定のインスタンスがあるかのようにしてフォームにアクセスできます。 たとえば、My.Forms.Form1.Show は Form1.Show と同じ意味です。

My.Forms オブジェクトは、現在のプロジェクトに関連付けられているフォームのみを公開します。 参照された DLL 内で宣言されているフォームにはアクセスできません。 DLL 内で参照されているフォームにアクセスするには、DllName.FormName という形式の修飾名を使用する必要があります。

OpenForms プロパティを使用すると、アプリケーションの現在開かれているすべてのフォームのコレクションを取得できます。

このオブジェクトとプロパティは、Windows アプリケーションでのみ使用できます。

プロパティ

My.Forms オブジェクトのプロパティを使用すると、現在のプロジェクト内のフォームのインスタンスにアクセスできます。 プロパティの名前はそのプロパティがアクセスするフォームの名前と同じになり、プロパティの型はフォームの型と同じになります。

注意

名前の衝突が存在する場合、フォームにアクセスするためのプロパティ名は RootNamespace_Namespace_FormName になります。 たとえば、Form1. という名前のフォームが 2 つあるとします。一方のフォームがルート名前空間 WindowsApplication1 内の名前空間 Namespace1 にある場合、このフォームにアクセスするには My.Forms.WindowsApplication1_Namespace1_Form1 を使用します。

My.Forms オブジェクトは、アプリケーションの起動時に作成されたメイン フォームのインスタンスへのアクセスを提供します。 他のフォームについては、フォームへのアクセスが発生したときに My.Forms オブジェクトがそのフォームの新しいインスタンスを作成して格納します。 以降は、そのプロパティにアクセスするとフォームのインスタンスが返されます。

フォームを破棄するには、そのフォームを表すプロパティに Nothing を代入します。 このプロパティ Set アクセス操作子が対応するフォームの Close メソッドを呼び出し、格納されている値に Nothing を代入します。 このプロパティに Nothing 以外の値を代入した場合は、setter が ArgumentException 例外をスローします。

My.Forms オブジェクトのプロパティにフォームのインスタンスが格納されているかどうかを調べるには、Is または IsNot 演算子を使用します。 これらの演算子を使用して、プロパティの値が Nothing かどうかを確認します。

注意

通常は、Is または IsNot 演算子が比較を実行するためには、プロパティの値を読み取る必要があります。 しかし、プロパティの現在の値が Nothing である場合は、値を読み取ろうとするとフォームの新しいインスタンスが作成され、そのインスタンスが返されてしまいます。 そこで、Visual Basic コンパイラは My.Forms オブジェクトのプロパティを特別扱いとし、Is または IsNot 演算子がプロパティの値を変更せずにプロパティのステータスを確認できるようにしています。

タスク

My.Forms オブジェクトに関連するタスクの例を次の表に示します。

目的

参照項目

あるフォームから別のフォームを制御する

方法: アプリケーション内のフォーム間でやり取りする (Visual Basic)

使用例

この例では、既定の 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 アプリケーション

クラス ライブラリ

×

コンソール アプリケーション

×

Windows コントロール ライブラリ

×

Web コントロール ライブラリ

×

Windows サービス

×

Web サイト

×

参照

処理手順

方法 : プロジェクトに Windows フォームを追加する

参照

OpenForms

Is 演算子 (Visual Basic)

IsNot 演算子 (Visual Basic)

Form

Close

概念

アプリケーション フォームへのアクセス (Visual Basic)

その他の技術情報

オブジェクト (Visual Basic)