WindowsFormsApplicationBase.OpenForms Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera kolekcję wszystkich otwartych formularzy aplikacji.
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
Wartość właściwości
Kolekcja zawierająca wszystkie otwarte formularze aplikacji.
Przykłady
Ten przykład wykonuje pętlę na otwartych formularzach aplikacji, wybiera te bezpośrednio dostępne przez bieżący wątek i wyświetla tytuły w kontrolce ListBox . Ten przykład wymaga, aby aplikacja Windows Forms miała postać o nazwie Form1
zawierającą pole listy o nazwie 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
Ten przykład wykonuje pętlę na otwartych formularzach aplikacji i wyświetla tytuły w kontrolce ListBox .
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
Uwagi
Właściwość My.Application.OpenForms
pobiera kolekcję wszystkich otwartych formularzy aplikacji. Zachowanie jest identyczne z właściwością Application.OpenForms .
Uwaga
Właściwość My.Application.OpenForms
zwraca wszystkie otwarte formularze, niezależnie od tego, który wątek je otworzył. Należy sprawdzić InvokeRequired właściwość każdego formularza przed uzyskaniem do niego dostępu. W przeciwnym razie może zgłosić InvalidOperationException wyjątek.
Dostępność według typu projektu
Project type (Typ projektu) | Dostępne |
---|---|
Aplikacja interfejsu Windows Forms | Tak |
Biblioteka klas | Nie |
Aplikacja konsoli | Nie |
Biblioteka formantów interfejsu Windows Forms | Nie |
Biblioteka formantów sieci Web | Nie |
Usługa systemu Windows | Nie |
Witryna sieci Web | Nie |