WindowsFormsApplicationBase.OpenForms Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft eine Auflistung aller geöffneten Formulare der Anwendung ab.
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
Eigenschaftswert
Eine Auflistung, die alle geöffneten Formulare der Anwendung enthält.
Beispiele
In diesem Beispiel werden die geöffneten Formulare der Anwendung durchlaufen, diejenigen ausgewählt, auf die der aktuelle Thread direkt zugreifen kann, und deren Titel werden in einem ListBox -Steuerelement angezeigt. In diesem Beispiel muss ihre Windows Forms Anwendung über ein Formular namens verfügenForm1
, das ein Listenfeld mit dem Namen ListBox1
enthält.
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 diesem Beispiel werden die geöffneten Formulare der Anwendung durchlaufen und deren Titel in einem ListBox -Steuerelement angezeigt.
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
Hinweise
Die My.Application.OpenForms
-Eigenschaft ruft eine Auflistung aller geöffneten Formulare der Anwendung ab. Das Verhalten ist identisch mit der Application.OpenForms -Eigenschaft.
Hinweis
Die My.Application.OpenForms
-Eigenschaft gibt alle geöffneten Formulare zurück, unabhängig davon, welcher Thread sie geöffnet hat. Sie sollten die InvokeRequired -Eigenschaft jedes Formulars überprüfen, bevor Sie darauf zugreifen. Andernfalls wird möglicherweise eine InvalidOperationException Ausnahme ausgelöst.
Verfügbarkeit nach Projekttyp
Projekttyp | Verfügbar |
---|---|
Windows Forms-Anwendung | Ja |
Klassenbibliothek | Nein |
Konsolenanwendung | Nein |
Windows Forms-Steuerelementbibliothek | Nein |
Websteuerelementbibliothek | Nein |
Windows-Dienst | Nein |
Website | Nein |