WindowsFormsApplicationBase.OpenForms プロパティ

定義

アプリケーションで開かれているすべてのフォームのコレクションを取得します。Gets a collection of all the application's open forms.

public:
 property System::Windows::Forms::FormCollection ^ OpenForms { System::Windows::Forms::FormCollection ^ get(); };
public System.Windows.Forms.FormCollection OpenForms { get; }
member this.OpenForms : System.Windows.Forms.FormCollection
Public ReadOnly Property OpenForms As FormCollection

プロパティ値

アプリケーションの開いているすべてのフォームを含むコレクション。A collection that contains all of the application's open forms.

この例では、アプリケーションの開いているフォームに対してループ処理を実行し、現在のスレッドが直接アクセスできるフォームを選択して、ListBox コントロールにタイトルを表示します。This example loops over the application's open forms, selects the ones directly accessible by the current thread, and displays their titles in a ListBox control. この例では、Windows フォームアプリケーションに ListBox1という名前のリストボックスを含む Form1 という名前のフォームが必要です。This example requires that your Windows Forms application have a form named Form1 that contains a list box named ListBox1.

Private Sub GetOpenFormTitles()
    Dim formTitles As New Collection

    Try
        For Each f As Form In My.Application.OpenForms
            If Not f.InvokeRequired Then
                ' Can access the form directly.
                formTitles.Add(f.Text)
            End If
        Next
    Catch ex As Exception
        formTitles.Add("Error: " & ex.Message)
    End Try

    Form1.ListBox1.DataSource = formTitles
End Sub

この例では、アプリケーションの開いているフォームをループし、ListBox コントロールにタイトルを表示します。This example loops over the application's open forms and displays their titles in a ListBox control.

Private Sub GetOpenFormTitles()
    Dim formTitles As New Collection

    Try
        For Each f As Form In My.Application.OpenForms
            ' Use a thread-safe method to get all form titles.
            formTitles.Add(GetFormTitle(f))
        Next
    Catch ex As Exception
        formTitles.Add("Error: " & ex.Message)
    End Try

    Form1.ListBox1.DataSource = formTitles
End Sub

Private Delegate Function GetFormTitleDelegate(f As Form) As String
Private Function GetFormTitle(f As Form) As String
    ' Check if the form can be accessed from the current thread.
    If Not f.InvokeRequired Then
        ' Access the form directly.
        Return f.Text
    Else
        ' Marshal to the thread that owns the form. 
        Dim del As GetFormTitleDelegate = AddressOf GetFormTitle
        Dim param As Object() = {f}
        Dim result As System.IAsyncResult = f.BeginInvoke(del, param)
        ' Give the form's thread a chance process function.
        System.Threading.Thread.Sleep(10)
        ' Check the result.
        If result.IsCompleted Then
            ' Get the function's return value.
            Return "Different thread: " & f.EndInvoke(result).ToString
        Else
            Return "Unresponsive thread"
        End If
    End If
End Function

注釈

My.Application.OpenForms プロパティは、アプリケーションの開いているすべてのフォームのコレクションを取得します。The My.Application.OpenForms property gets a collection of all the application's open forms. 動作は、Application.OpenForms プロパティと同じです。The behavior is identical to the Application.OpenForms property.

注意

My.Application.OpenForms プロパティは、開いているすべてのフォームを、どのスレッドが開いているかに関係なく返します。The My.Application.OpenForms property returns all open forms, regardless of which thread opened them. アクセスする前に、各フォームの InvokeRequired プロパティを確認する必要があります。それ以外の場合は、InvalidOperationException 例外がスローされる可能性があります。You should check the InvokeRequired property of each form before accessing it; otherwise, it might throw an InvalidOperationException exception.

プロジェクトの種類別の可用性Availability by Project Type

プロジェクトの種類Project type 使用可能Available
Windows フォーム アプリケーションWindows Forms Application はいYes
クラス ライブラリClass Library いいえNo
コンソール アプリケーションConsole Application いいえNo
Windows フォーム コントロール ライブラリWindows Forms Control Library いいえNo
Web コントロールライブラリWeb Control Library いいえNo
Windows サービスWindows Service いいえNo
Web サイトWeb Site いいえNo

セキュリティ

UIPermission
ユーザーインターフェイスとクリップボードに関連するアクセス許可を制御します。Controls the permissions that are related to user interfaces and the Clipboard. AllWindows (関連する列挙体)Associated enumeration: AllWindows.

適用対象

こちらもご覧ください