次の方法で共有


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

87y2hdsf.alert_note(ja-jp,VS.90).gifメモ :

名前の衝突が存在する場合、フォームにアクセスするためのプロパティ名は 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 かどうかを確認します。

87y2hdsf.alert_note(ja-jp,VS.90).gifメモ :

通常は、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 フォームを追加する

方法 : フォームにアクセスする

概念

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

参照

My.Application.OpenForms プロパティ

My.Application.OpenForms プロパティ

Is 演算子 (Visual Basic)

IsNot 演算子

Form

Close