Partager via


Comment : localiser les contrôles Web Forms sur une page en parcourant la collection Controls

Mise à jour : novembre 2007

Chaque contrôle conteneur de la page, et la page elle-même, contient une collection Controls, que vous pouvez utiliser pour accéder aux contrôles individuels.

Pour localiser des contrôles dans la collection Controls

  • Parcourez la collection Controls du contrôle conteneur. La collection est de type ControlCollection et retourne des objets de type Control.

    L'exemple ci-dessous montre comment parcourir la collection Controls. L'exemple suppose que la page Web ASP.NET contient au moins un contrôle TextBox, un contrôle Label et un contrôle Button. Le code obtient tous les contrôles enfants de l'objet Page. Comme cette procédure ne donne comme résultat que quelques contrôles enfants de niveau supérieur, y compris l'objet HtmlForm, le code parcourt également la collection Controls de chaque contrôle enfant. Le code recherche des zones de texte en comparant le type de chaque contrôle. Lorsqu'il trouve une zone de texte, il récupère la valeur de cette zone de texte et la concatène dans une chaîne qui s'affiche à la fin, dans un contrôle Label.

    Cet exemple recherche uniquement les contrôles contenus dans l'objet Page et les contrôles qui sont des enfants directs de la page. Il ne recherche pas les zones de texte qui sont des enfants d'un contrôle qui est, à son tour, un enfant de la page. Par exemple, si vous avez ajouté un contrôle Panel à la page, le contrôle Panel est un enfant du contrôle HtmlForm contenu dans l'objet Page et il est affiché dans cet exemple. En revanche, si vous avez ensuite ajouté un contrôle TextBox dans le contrôle Panel, le texte du contrôle TextBox ne s'affiche pas dans l'exemple car il n'est pas un enfant de la page ou d'un contrôle enfant de cette page. Il serait plus pratique de parcourir les contrôles en créant une méthode récursive pouvant être appelée pour parcourir la collection Controls de chaque contrôle chaque fois qu'elle rencontre un contrôle. Toutefois, par souci de clarté, l'exemple suivant n'est pas créé en tant que fonction récursive.

    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;
        }
    }
    
    

Voir aussi

Concepts

Identification d'un contrôle Web Forms