Попробуйте этот метод в вашей форме. Он рекурсивно получит все элементы управления вашей формы и их потомков:
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;
}
Затем назовите его с:
List<Control> availControls = GetControls(this);