Freigeben über


Gewusst wie: Suchen von Web Forms-Steuerelementen auf einer Seite durch Durchlaufen der Steuerelementauflistung

Aktualisiert: November 2007

Jedes Containersteuerelement auf einer Seite sowie die Seite selbst verfügen über eine Controls-Auflistung, über die Sie einzelne Steuerelemente abrufen können.

So suchen Sie Steuerelemente in der Controls-Auflistung

  • Durchlaufen Sie die Controls-Auflistung des Containersteuerelements. Die Auflistung ist vom Typ ControlCollection und gibt Objekte des Typs Control zurück.

    Das folgende Beispiel zeigt, wie die Controls-Auflistung durchlaufen wird. Das Beispiel geht von einer ASP.NET-Webseite mit mindestens einem TextBox-Steuerelement, einem Label-Steuerelement und einem Button-Steuerelement aus. Der Code ruft alle untergeordneten Steuerelemente des Page-Objekts ab. Da hierbei lediglich einige untergeordnete HtmlForm-Objekte einer höheren Ebene zurückgegeben würden, durchläuft der Code zusätzlich die Controls-Auflistung jedes einzelnen untergeordneten Steuerelements. Der Code sucht nach Textfeldern, indem die Typen aller Steuerelemente verglichen werden. Sobald ein Textfeld gefunden wird, ruft der Code den Wert des Textfelds ab und verkettet ihn in einer Zeichenfolge, die schließlich in einem Label-Steuerelement angezeigt wird.

    ‎Im vorliegenden Beispiel werden lediglich die im Page-Objekt enthaltenen sowie die der Seite direkt untergeordneten Steuerelemente gefunden. Die Textfelder, die einem Steuerelement untergeordnet sind, das wiederum der Seite untergeordnet ist, werden nicht gefunden. Wenn Sie der Seite beispielsweise ein Panel-Steuerelement hinzufügen, wird das Panel-Steuerelement dem HtmlForm-Steuerelement des Page-Objekts untergeordnet und daher gefunden. Wenn Sie allerdings dem Panel-Steuerelement ein TextBox-Steuerelement hinzufügen, wird der Text des TextBox-Steuerelements in diesem Beispiel nicht angezeigt, da dieses weder der Seite noch einem der Seite untergeordneten Steuerelement direkt untergeordnet ist. Eine praktischere Möglichkeit, die Steuerelemente auf diese Art zu durchlaufen, wäre das Erstellen einer rekursiven Methode, die bei ihrem Aufruf die Controls-Auflistung jedes gefundenen Steuerelements durchläuft. Das folgende Beispiel wurde allerdings aus Gründen der Übersichtlichkeit nicht als rekursive Funktion erstellt.

    Private Sub Button1_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Button1.Click
        Dim allTextBoxValues As String = ""
        Dim c As Control
        Dim childc As Control
        For Each c In Page.Controls
            For Each childc In c.Controls
                If TypeOf childc Is TextBox Then
                    allTextBoxValues &= CType(childc, TextBox).Text & ","
                End If
            Next
        Next
        If allTextBoxValues <> "" Then
            Label1.Text = allTextBoxValues
        End If
    End Sub
    
    private void Button1_Click(object sender, System.EventArgs e)
    {
        string allTextBoxValues = "";
        foreach (Control c in Page.Controls)
        {
            foreach (Control childc in c.Controls)
            {
                if (childc is TextBox)
                {
                    allTextBoxValues += ((TextBox)childc).Text + ",";
                }
            }
        }
        if (allTextBoxValues != "")
        {
            Label1.Text = allTextBoxValues;
        }
    }
    
    

Siehe auch

Konzepte

Steuerelementidentifikation in Web Forms