Udostępnij za pośrednictwem


WindowsFormsApplicationBase.OpenForms Właściwość

Definicja

Pobiera kolekcję wszystkich otwartych formularzy aplikacji.

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

Wartość właściwości

Kolekcja zawierająca wszystkie otwarte formularze aplikacji.

Przykłady

Ten przykład wykonuje pętlę na otwartych formularzach aplikacji, wybiera te bezpośrednio dostępne przez bieżący wątek i wyświetla tytuły w kontrolce ListBox . Ten przykład wymaga, aby aplikacja Windows Forms miała postać o nazwie Form1 zawierającą pole listy o nazwie 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

Ten przykład wykonuje pętlę na otwartych formularzach aplikacji i wyświetla tytuły w kontrolce ListBox .

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

Uwagi

Właściwość My.Application.OpenForms pobiera kolekcję wszystkich otwartych formularzy aplikacji. Zachowanie jest identyczne z właściwością Application.OpenForms .

Uwaga

Właściwość My.Application.OpenForms zwraca wszystkie otwarte formularze, niezależnie od tego, który wątek je otworzył. Należy sprawdzić InvokeRequired właściwość każdego formularza przed uzyskaniem do niego dostępu. W przeciwnym razie może zgłosić InvalidOperationException wyjątek.

Dostępność według typu projektu

Project type (Typ projektu) Dostępne
Aplikacja interfejsu Windows Forms Tak
Biblioteka klas Nie
Aplikacja konsoli Nie
Biblioteka formantów interfejsu Windows Forms Nie
Biblioteka formantów sieci Web Nie
Usługa systemu Windows Nie
Witryna sieci Web Nie

Dotyczy

Zobacz też