62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
///得到给定的控件下的所有某种类型的子控件。
/// </summary>
/// <param name="c">给定的控件。</param>
/// <param name="controlName">要获取的子控件类型名称。</param>
/// <returns>找到的所有子控件。</returns>
public static Control[] GetControls(Control c, string controlName)
{
List<Control> controls = new List<Control>();
BuildControls(c, controlName, controls);
Control[] controlArray = controls.ToArray();
return controlArray;
}
/// <summary>
/// 构建GetControls方法中创建的controls泛型集合,为其添加元素。
/// </summary>
/// <param name="c">给定的控件。</param>
/// <param name="controlName">要获取的子控件类型名称</param>
/// <param name="controls">GetControls方法中创建的controls泛型集合的一个引用。</param>
private static void BuildControls(Control c, string controlName, List<Control> controls)
{
for (int i = 0; i < c.Controls.Count; i++)
{
if (c.Controls[i].GetType().Name == controlName)
controls.Add(c.Controls[i]);
if (c.Controls[i].HasControls())
BuildControls(c.Controls[i], controlName, controls);
}
}
List<System.Web.UI.Control> GetControls(System.Web.UI.ControlCollection ctrls, Type t)
{
List<System.Web.UI.Control> list = new List<System.Web.UI.Control>();
foreach (System.Web.UI.Control ctrl in ctrls)
{
if (ctrl.GetType() == t)
list.Add(ctrl);
if (ctrl.Controls.Count > 0)
list.AddRange(GetControls(ctrl.Controls, t));
}
return list;
}
List<System.Web.UI.Control> GetControls(System.Web.UI.ControlCollection ctrls, Type t)
{
List<System.Web.UI.Control> list = new List<System.Web.UI.Control>();
foreach (System.Web.UI.Control ctrl in ctrls)
{
if (ctrl.GetType() == t)
{
list.Add(ctrl);
}
if (ctrl.Controls.Count > 0)
{
foreach (System.Web.UI.Control c in ctrl.Controls)
{
list.AddRange(GetControls(c.Controls, t));
}
}
}
return list;
}