WindowsFormsApplicationBase.OpenForms Eigenschap

Definitie

Hiermee haalt u een verzameling van alle geopende formulieren van de toepassing op.

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

Waarde van eigenschap

Een verzameling die alle geopende formulieren van de toepassing bevat.

Voorbeelden

In dit voorbeeld worden de geopende formulieren van de toepassing herhaald, worden de geopende formulieren geselecteerd die rechtstreeks toegankelijk zijn voor de huidige thread en worden de bijbehorende titels in een ListBox besturingselement weergegeven. In dit voorbeeld moet uw Windows Forms toepassing een formulier hebben met de naam Form1 met een keuzelijst met de naam 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

In dit voorbeeld worden de geopende formulieren van de toepassing herhaald en worden de bijbehorende titels weergegeven in een ListBox besturingselement.

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

Opmerkingen

De My.Application.OpenForms eigenschap haalt een verzameling van alle geopende formulieren van de toepassing op. Het gedrag is identiek aan de Application.OpenForms eigenschap.

Note

De My.Application.OpenForms eigenschap retourneert alle geopende formulieren, ongeacht welke thread ze heeft geopend. Controleer de InvokeRequired eigenschap van elk formulier voordat u het opent. Anders kan er een InvalidOperationException uitzondering ontstaan.

Beschikbaarheid per projecttype

Projecttype Available
Windows Forms toepassing Yes
Klassebibliotheek No
Console toepassing No
Windows Forms-besturingselementbibliotheek No
Webcontrolebibliotheek No
Windows-serviceprogramma No
Website No

Van toepassing op

Zie ook