WindowsFormsApplicationBase.OpenForms Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém uma coleção de todos os formulários abertos do aplicativo.
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 da propriedade
Uma coleção que contém todos os formulários abertos do aplicativo.
Exemplos
Este exemplo faz um loop sobre os formulários abertos do aplicativo, seleciona os que podem ser acessados diretamente pelo thread atual e exibe seus títulos em um ListBox controle. Este exemplo exige que seu aplicativo Windows Forms tenha um formulário chamado Form1
que contém uma caixa de listagem chamada 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
Este exemplo faz um loop sobre os formulários abertos do aplicativo e exibe seus títulos em um ListBox controle.
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
Comentários
A My.Application.OpenForms
propriedade obtém uma coleção de todos os formulários abertos do aplicativo. O comportamento é idêntico à Application.OpenForms propriedade .
Observação
A My.Application.OpenForms
propriedade retorna todos os formulários abertos, independentemente de qual thread os abriu. Você deve marcar a InvokeRequired propriedade de cada formulário antes de acessá-la; caso contrário, ela poderá gerar uma exceçãoInvalidOperationException.
Disponibilidade por tipo de projeto
Tipo de projeto | Disponível |
---|---|
Aplicativo do Windows Forms | Sim |
Biblioteca de Classes | Não |
Aplicativo do Console | Não |
Biblioteca de Controle Windows Forms | Não |
Biblioteca de Controles da Web | Não |
Serviço do Windows | Não |
Site | Não |