WindowsFormsApplicationBase.OpenForms Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 |