[C#]获得WindowsForm上所有特定类型的控件

本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!

开发工具: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>()));
    }
}

三、设计界面如下:

四、运行效果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博客

ExtJs四(ExtJs MVC登录窗口的调试)

继上一节中实现了验证码http://www.cnblogs.com/aehyok/archive/2013/04/19/3030212.html,现在我们可以进...

582
来自专栏小筱月

SSM整合开发

controller:作为请求转发,调用service接口处理逻辑,页面所有路径的访问方法:控制层的命名空间+@RequestMapping的value ser...

591
来自专栏PHP技术大全

通过代码审计找出网站中的XSS漏洞实战(三)

笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘、工具挖掘、代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联...

892
来自专栏玄魂工作室

PHP代码审计Day2 - filter_var函数缺陷

--------------------------------------------------------------------------------...

622
来自专栏晓晨的专栏

nodejs-ORM 操作数据库中间件waterline的使用

863
来自专栏Create Sun

基础拾遗-----数据注解与验证

前言 其实对于这块知识点,一直觉得没有必要进行总结,只是新到的公司当时用到了 kendo for asp.net mvc ,里面有用到,自动初始化页面,而依据基...

32410
来自专栏finleyMa

Laravel 前后台共享数据

5.5以后可以这么写, 用 @json Blade 指令替代手动 json_encode

794
来自专栏林冠宏的技术文章

项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。

我们不说废话,直接入主题,抓紧时间写完,好继续找bug... (PS:imageLoder的bug 百度不到的哦,不过我坚信我的观点没错) 版本1.9.2,1....

1766
来自专栏Danny的专栏

三分钟学会JUnit单元测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

652
来自专栏古时的风筝

mybatis Generator生成代码及使用方式

为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,ORM 的出现就是为了简化开发。最初的开发方式是业务逻辑和数据库查询逻辑是分开的,...

1979

扫码关注云+社区