WindowsFormsApplicationBase.OpenForms Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe uma coleção de todos os formulários abertos da candidatura.
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 Propriedade
Uma coleção que contém todos os formulários abertos da candidatura.
Exemplos
Este exemplo faz um loop sobre os formulários abertos da aplicação, seleciona os diretamente acessíveis pelo thread atual e apresenta os seus títulos num ListBox controlo. Este exemplo exige que a sua candidatura de Windows Forms tenha um formulário chamado Form1 que contenha uma caixa de lista 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 looping sobre os formulários abertos da aplicação e apresenta os seus títulos num ListBox controlo.
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
Observações
A My.Application.OpenForms propriedade recebe uma coleção de todos os formulários abertos da candidatura. O comportamento é idêntico ao da Application.OpenForms propriedade.
Note
A My.Application.OpenForms propriedade devolve todos os formulários abertos, independentemente de qual thread os tenha aberto. Deves verificar a InvokeRequired propriedade de cada formulário antes de o aceder; caso contrário, pode lançar uma InvalidOperationException exceção.
Disponibilidade por tipo de projeto
| Tipo de Projeto | Available |
|---|---|
| Aplicação Windows Forms | Sim |
| Biblioteca de Classes | No |
| Aplicativo de console | No |
| Biblioteca de Controlo Windows Forms | No |
| Biblioteca de controle da Web | No |
| Serviço Windows | No |
| Web site | No |