WindowsFormsApplicationBase.OpenForms Propriedade

Definição

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

Aplica-se a

Ver também