Bagikan melalui


WindowsFormsApplicationBase.OpenForms Properti

Definisi

Mendapatkan koleksi semua formulir terbuka aplikasi.

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

Nilai Properti

Koleksi yang berisi semua formulir terbuka aplikasi.

Contoh

Contoh ini mengulang formulir terbuka aplikasi, memilih yang dapat diakses langsung oleh utas saat ini, dan menampilkan judulnya dalam ListBox kontrol. Contoh ini mengharuskan aplikasi Formulir Windows Anda memiliki formulir bernama Form1 yang berisi kotak daftar bernama 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

Contoh ini mengulang formulir terbuka aplikasi dan menampilkan judulnya dalam ListBox kontrol.

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

Keterangan

Properti My.Application.OpenForms mendapatkan koleksi semua formulir terbuka aplikasi. Perilaku ini identik dengan Application.OpenForms properti .

Catatan

Properti My.Application.OpenForms mengembalikan semua formulir terbuka, terlepas dari utas mana yang membukanya. Anda harus memeriksa InvokeRequired properti dari setiap formulir sebelum mengaksesnya; jika tidak, itu mungkin melemparkan InvalidOperationException pengecualian.

Ketersediaan menurut Jenis Proyek

Jenis proyek Tersedia
Aplikasi Formulir Windows Ya
Pustaka Kelas Tidak
Aplikasi Konsol Tidak
Pustaka Kontrol Formulir Windows Tidak
Pustaka Kontrol Web Tidak
Layanan Windows Tidak
Situs Web Tidak

Berlaku untuk

Lihat juga