Freigeben über


WindowsFormsApplicationBase.OpenForms Eigenschaft

Definition

Ruft eine Auflistung aller geöffneten Formulare der Anwendung ab.

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

Eigenschaftswert

Eine Auflistung, die alle geöffneten Formulare der Anwendung enthält.

Beispiele

In diesem Beispiel werden die geöffneten Formulare der Anwendung durchlaufen, diejenigen ausgewählt, auf die der aktuelle Thread direkt zugreifen kann, und deren Titel werden in einem ListBox -Steuerelement angezeigt. In diesem Beispiel muss ihre Windows Forms Anwendung über ein Formular namens verfügenForm1, das ein Listenfeld mit dem Namen ListBox1enthält.

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

In diesem Beispiel werden die geöffneten Formulare der Anwendung durchlaufen und deren Titel in einem ListBox -Steuerelement angezeigt.

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

Hinweise

Die My.Application.OpenForms -Eigenschaft ruft eine Auflistung aller geöffneten Formulare der Anwendung ab. Das Verhalten ist identisch mit der Application.OpenForms -Eigenschaft.

Hinweis

Die My.Application.OpenForms -Eigenschaft gibt alle geöffneten Formulare zurück, unabhängig davon, welcher Thread sie geöffnet hat. Sie sollten die InvokeRequired -Eigenschaft jedes Formulars überprüfen, bevor Sie darauf zugreifen. Andernfalls wird möglicherweise eine InvalidOperationException Ausnahme ausgelöst.

Verfügbarkeit nach Projekttyp

Projekttyp Verfügbar
Windows Forms-Anwendung Ja
Klassenbibliothek Nein
Konsolenanwendung Nein
Windows Forms-Steuerelementbibliothek Nein
Websteuerelementbibliothek Nein
Windows-Dienst Nein
Website Nein

Gilt für:

Weitere Informationen