WindowsFormsApplicationBase.OpenForms Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar en samling av alla programmets öppna formulär.
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
Egenskapsvärde
En samling som innehåller alla programmets öppna formulär.
Exempel
Det här exemplet loopar över programmets öppna formulär, väljer de som är direkt åtkomliga av den aktuella tråden och visar deras rubriker i en ListBox kontroll. Det här exemplet kräver att ditt Windows Forms-program har ett formulär med namnet Form1 som innehåller en listruta med namnet 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
Det här exemplet loopar över programmets öppna formulär och visar deras rubriker i en ListBox kontroll.
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
Kommentarer
Egenskapen My.Application.OpenForms hämtar en samling av alla programmets öppna formulär. Beteendet är identiskt med egenskapen Application.OpenForms .
Note
Egenskapen My.Application.OpenForms returnerar alla öppna formulär, oavsett vilken tråd som öppnade dem. Du bör kontrollera egenskapen för InvokeRequired varje formulär innan du öppnar det. Annars kan det utlösa ett InvalidOperationException undantag.
Tillgänglighet efter projekttyp
| Projekttyp | Tillgängligt |
|---|---|
| Windows Forms program | Yes |
| Klassbibliotek | No |
| Konsolprogram | No |
| Windows Forms kontrollbibliotek | No |
| Webbkontrollbibliotek | No |
| Windows-tjänsten | No |
| Webbplats | No |