Ravi
Ravi

Reputation: 1273

Get available controls from a Form

How do I get available controls from a Windows Forms form using C#?

Upvotes: 0

Views: 20404

Answers (3)

erikkallen
erikkallen

Reputation: 34421

Or, ProfK's solution in enumerable syntax:

public static IEnumerable<Control> GetControls(Control form) {
    foreach (Control childControl in form.Controls) {   // Recurse child controls.
        foreach (Control grandChild in GetControls(childControl)) {
            yield return grandChild;
        }
        yield return childControl;
    }
}

Upvotes: 22

ProfK
ProfK

Reputation: 51094

Try this method in your form. It will recursively get all controls on your form, and their children:

public static List<Control> GetControls(Control form)
{
    var controlList = new List<Control>();

    foreach (Control childControl in form.Controls)
    {
        // Recurse child controls.
        controlList.AddRange(GetControls(childControl));
        controlList.Add(childControl);
    }
    return controlList;
}

Then call it with a:

List<Control> availControls = GetControls(this);

Upvotes: 6

Ahmed
Ahmed

Reputation: 7248

I think you mean all controls on the form. So simply you can use Controls property inside your form object.

foreach(Control c in this.Controls)
{
   //TODO:
}

Upvotes: 1

Related Questions