我正在循环浏览页面上的所有控件,并在某些条件下将某些类型(TextBox,CheckBox,DropDownList等)设置为Enabled = False.
但是我注意到这样一个明显的页面加载循环增加.是否有可能只从Page.Controls对象获取某些类型的控件而不是循环遍历它们?可能是像LINQ这样的东西?
但是我注意到这样一个明显的页面加载循环增加.是否有可能只从Page.Controls对象获取某些类型的控件而不是循环遍历它们?可能是像LINQ这样的东西?
解决方法
这不能完全使用LINQ完成,但您可以使用这样定义的扩展
static class ControlExtension { public static IEnumerable<Control> GetAllControls(this Control parent) { foreach (Control control in parent.Controls) { yield return control; foreach (Control descendant in control.GetAllControls()) { yield return descendant; } } } }
并打电话
this.GetAllControls().OfType<TextBox>().ToList().ForEach(t => t.Enabled = false);