Récursivité : Lister tous les controls d'un control

Contenu du snippet

/// <summary>
/// Retouner une liste de tous les controls contenus dans un control sans oublier les controls enfant de ceux-ci
/// </summary>
/// <param name="sender"></param>
/// <returns></returns>
public static IEnumerable<Control> ControlsAvecRecursivite(this Control sender)
{
    // Lister les controls enfant
    foreach (Control c in sender.Controls)
    {
        // Retourner le control enfant
        yield return c;
        // Pour chague control retourner ses controls enfant via l'énumération [Recursivite]
        foreach (Control child in c.ControlsAvecRecursivite())
        {
            yield return child;
        }
    }
}
// LE code s'utilise simplement comme ceci :
Ienumerable<Control> controls = this.ControlsAvecRecursivite();

// Par exemple Pour lister les ID des contrôles Textbox d'un panel
var textBoxs = from c in panel.ControlsAvecRecursivite()
               where c is TextBox
               select c.ID;


Compatibilité : C# 3.x

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.