Самый простой вариант может быть каскадным:
public static void SetEnabled(Control control, bool enabled) {
control.Enabled = enabled;
foreach(Control child in control.Controls) {
SetEnabled(child, enabled);
}
}
или аналогичный; Вы, конечно, могли бы передать делегата, чтобы сделать его довольно общим:
public static void ApplyAll(Control control, Action<Control> action) {
action(control);
foreach(Control child in control.Controls) {
ApplyAll(child, action);
}
}
тогда такие вещи, как:
ApplyAll(this, c => c.Validate());
ApplyAll(this, c => {c.Enabled = false; });