WindowsFormsApplicationBase.OpenForms Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene una colección de todos los formularios abiertos de la aplicación.
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
Valor de propiedad
Colección que contiene todos los formularios abiertos de la aplicación.
Ejemplos
En este ejemplo se recorren los formularios abiertos de la aplicación, se seleccionan los accesibles directamente por el subproceso actual y se muestran sus títulos en un ListBox control . En este ejemplo se requiere que la aplicación de Windows Forms tenga un formulario denominado Form1
que contenga un cuadro de lista denominado 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
En este ejemplo se recorren los formularios abiertos de la aplicación y se muestran sus títulos en un ListBox control .
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
Comentarios
La My.Application.OpenForms
propiedad obtiene una colección de todos los formularios abiertos de la aplicación. El comportamiento es idéntico a la Application.OpenForms propiedad .
Nota
La My.Application.OpenForms
propiedad devuelve todos los formularios abiertos, independientemente del subproceso que los abra. Debe comprobar la InvokeRequired propiedad de cada formulario antes de tener acceso a él; de lo contrario, podría producir una InvalidOperationException excepción.
Disponibilidad por tipo de proyecto
Tipo de proyecto | Disponible |
---|---|
Aplicación de Windows Forms | Sí |
Biblioteca de clases | No |
Aplicación de consola | No |
Biblioteca de controles de Windows Forms | No |
Biblioteca de controles web | No |
Servicio de Windows | No |
Sitio web | No |