Aracılığıyla paylaş


WindowsFormsApplicationBase.OpenForms Özellik

Tanım

Uygulamanın tüm açık formlarından oluşan bir koleksiyon alı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

Özellik Değeri

Uygulamanın tüm açık formlarını içeren bir koleksiyon.

Örnekler

Bu örnek, uygulamanın açık formları üzerinde döngü oluşturur, geçerli iş parçacığı tarafından doğrudan erişilebilen formları seçer ve başlıklarını bir ListBox denetimde görüntüler. Bu örnek, Windows Forms uygulamanızın adlı liste kutusu ListBox1içeren adlı Form1 bir forma sahip olmasını gerektirir.

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

Bu örnek, uygulamanın açık formları üzerinde döngü oluşturur ve başlıklarını bir ListBox denetimde görüntüler.

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

Açıklamalar

özelliği, My.Application.OpenForms uygulamanın tüm açık formlarının koleksiyonunu alır. Davranış özelliğiyle Application.OpenForms aynıdır.

Not

My.Application.OpenForms özelliği, hangi iş parçacığının açtığından bağımsız olarak tüm açık formları döndürür. Her formun InvokeRequired özelliğini erişmeden önce denetlemeniz gerekir; aksi takdirde bir InvalidOperationException özel durum oluşturabilir.

Proje Türüne Göre Kullanılabilirlik

Proje türü Kullanılabilir
Windows Forms Uygulaması Evet
Sınıf Kitaplığı No
Konsol Uygulaması No
Windows Forms Denetim Kitaplığı No
Web Denetim Kitaplığı No
Windows Hizmeti No
Web Sitesi No

Şunlara uygulanır

Ayrıca bkz.