Reputation: 1273
How do I get available controls from a Windows Forms form using C#?
Upvotes: 0
Views: 20404
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
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
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