Sdílet prostřednictvím


WindowsFormsApplicationBase.OpenForms Vlastnost

Definice

Získá kolekci všech otevřených formulářů aplikace.

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

Hodnota vlastnosti

Kolekce, která obsahuje všechny otevřené formuláře aplikace.

Příklady

Tento příklad smyčky přes otevřené formuláře aplikace, vybere ty přímo přístupné aktuálním vláknem a zobrazí jejich názvy v ovládacím ListBox prvku. Tento příklad vyžaduje, aby vaše aplikace Windows Forms měla formulář s názvem Form1 , který obsahuje seznam s názvem 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

Tento příklad smyčky nad otevřenými formuláři aplikace a zobrazí jejich názvy v ovládacím ListBox prvku.

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

Poznámky

Vlastnost My.Application.OpenForms získá kolekci všech otevřených formulářů aplikace. Chování je stejné jako vlastnost Application.OpenForms .

Poznámka:

Vlastnost My.Application.OpenForms vrátí všechny otevřené formuláře bez ohledu na to, které vlákno je otevřelo. Před přístupem k formuláři InvokeRequired byste měli zkontrolovat vlastnost každého formuláře. Jinak může dojít k výjimce InvalidOperationException .

Dostupnost podle typu projektu

Typ projektu K dispozici
Aplikace Windows Forms Ano
Knihovna tříd Ne
Konzolová aplikace Ne
Knihovna ovládacích prvků Windows Forms Ne
Knihovna webových ovládacích prvků Ne
Služba systému Windows Ne
Webu Ne

Platí pro

Viz také