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 オブジェクトに関連するタスクの例を次の表に示します。
目的 |
参照項目 |
あるフォームから別のフォームを制御する |
使用例
この例では、既定の 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 フォームを追加する
参照
概念
アプリケーション フォームへのアクセス (Visual Basic)