Поделиться через


WindowsFormsApplicationBase.OpenForms Свойство

Определение

Возвращает коллекцию всех открытых форм приложения.

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

Значение свойства

Коллекция, содержащая все открытые формы приложения.

Примеры

В этом примере выполняется цикл по открытым формам приложения, выбирает те из них, к которым непосредственно доступен текущий поток, и отображает их заголовки в элементе ListBox управления . В этом примере требуется, чтобы приложение Windows Forms содержало форму Form1 со списком с именем 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

В этом примере выполняется цикл по открытым формам приложения и отображаются их заголовки в элементе 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

Комментарии

Свойство My.Application.OpenForms получает коллекцию всех открытых форм приложения. Поведение идентично свойству Application.OpenForms .

Примечание

Свойство My.Application.OpenForms возвращает все открытые формы, независимо от того, какой поток их открыл. Перед доступом InvokeRequired к ней следует проверка свойство каждой формы. В противном случае это может вызвать InvalidOperationException исключение.

Доступность по типу проекта

Тип проекта Доступно
Приложение Windows Forms Да
Библиотека классов Нет
Консольное приложение Нет
Библиотека элементов управления Windows Forms Нет
Библиотека веб-элементов управления Нет
Службы Windows Нет
Веб-сайт Нет

Применяется к

См. также раздел