本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!
开发工具:VS2017
语言:C#
DotNet版本:.Net FrameWork 4.0及以上
一、本文使用的C#语言要点有以下几个:
拓展方法、泛型方法、泛型约束、递归,不懂的可以自行百度
二、具体代码如下:
public static class Utils { public static IEnumerable<TControl> GetChildControls<TControl>(this Control control) where TControl : Control { if (control.Controls.Count == 0) { return Enumerable.Empty<TControl>(); } var children = control.Controls.OfType<Control>().ToList(); return children.OfType<TControl>().Concat(children.SelectMany(n => n.GetChildControls<TControl>())); } }
三、设计界面如下:
四、运行效果如下: