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 | Нет |
Веб-сайт | Нет |