My.Forms オブジェクト
更新 : 2007 年 11 月
現在のプロジェクト内で宣言されている各 Windows フォームのインスタンスにアクセスするためのプロパティを提供します。
解説
My.Forms オブジェクトは、現在のプロジェクト内の各フォームのインスタンスを提供します。プロパティの名前は、そのプロパティのアクセス先のフォームと同じ名前になります。フォームをプロジェクトに追加する方法については、「方法 : プロジェクトに Windows フォームを追加する」を参照してください。
My.Forms オブジェクトによって提供されるフォームにアクセスするには、そのフォームの名前を修飾子なしで使用します。このプロパティ名はフォームの型名と同じになるので、まるで既定のインスタンスがあるかのようにしてフォームにアクセスできます。たとえば、My.Forms.Form1.Show は Form1.Show と同じ意味です。
My.Forms オブジェクトは、現在のプロジェクトに関連付けられているフォームのみを公開します。参照された DLL 内で宣言されているフォームにはアクセスできません。DLL 内で参照されているフォームにアクセスするには、DllName.FormName という形式の修飾名を使用する必要があります。詳細については、「方法 : フォームにアクセスする」を参照してください。
My.Application.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 アプリケーション |
○ |
クラス ライブラリ |
X |
コンソール アプリケーション |
X |
Windows コントロール ライブラリ |
X |
Web コントロール ライブラリ |
X |
Windows サービス |
X |
Web サイト |
X |
参照
処理手順
方法 : プロジェクトに Windows フォームを追加する
概念
参照
My.Application.OpenForms プロパティ