这里要用两个知识,一个是递归,一个是队列。

//定义一个Control类型的队列allCtrls
private static Queue <Control> allCtrls = new Queue<Control>(); public form1()
{
CheckAllCtrls(this);//调用很简单,把要遍历的放进参数即可。如果控件没有变化,则加载时调用一次即可。
} //递归遍历所有的子孙控件包括容器类
private static void CheckAllCtrls(Control item )
{
for (int i = ; i < item.Controls.Count; i++)
{
if (item.Controls[i].HasChildren)
{
CheckAllCtrls(item.Controls[i]); }
//else{allCtrls.Enqueue (item.Controls[i]);}//如果只要子控件,那么这个语句在else里
allCtrls.Enqueue(item.Controls[i]);
}
}

这样

allCtrls这个队列就有了所有的控件了

比如让所有的按钮控件text加上个“我是按钮+”
 foreach (Control devices in allCtrls)
{ if (devices is button DVC)
{
DVC.Text ="我是按钮+" +DVC.Text ;
} }

则整个form下所有的按钮,无论有几层容器,都会变化。

就是这么简单。

有问题可以留言交流。

C# 遍历所有的子控件和孙控件,包括容器中的,并批量操作和调用的更多相关文章

  1. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

    (转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...

  2. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  3. C#多线程应用:子线程更新主窗体控件的值(二)

    在上篇文章中,我已经给大家列了一个在主线程中实现的方式,这篇文章来给大家说说使用Invoke的方式的例子: 对于不代理不太熟悉的朋友,建议先查查相关资料: 例子一: 在C#中,直接在子线程中对窗体上的 ...

  4. WPF遍历当前容器中某种控件的方法

    原文:WPF遍历当前容器中某种控件的方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79 ...

  5. 修复duilib CEditUI控件和CWebBrowserUI控件中按Tab键无法切换焦点的bug

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控 ...

  6. DevExpress控件的GridControl控件小结

    DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...

  7. MFC编程入门之二十七(常用控件:图片控件PictureControl)

    上一节讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是 ...

  8. ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用

    在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMet ...

  9. 027. asp.net中数据绑定控件之 GridView控件

    GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...

随机推荐

  1. 牛客练习赛43F Tachibana Kanade Loves Game

    题目地址 Link 题解 这题其实就是求1~n中有多少与2~20互质的数,然后其实只跟1~20里面的质数有关. 那么考虑容斥一下求出来一共有多少个不互质的,用n减一下就是互质的数的个数了.然后判一下a ...

  2. git push时报错:Updates were rejected because the tip of your current branch is behind

    出现这样的问题是由于:自己当前版本低于远程仓库版本 有如下几种解决方法: 1.使用强制push的方法: git push -u origin master -f 这样会使远程修改丢失,一般是不可取的, ...

  3. MapReduce编程:数字排序

    问题描述 将乱序数字按照升序排序. 思路描述 按照mapreduce的默认排序,依次输出key值. 代码 package org.apache.hadoop.examples; import java ...

  4. css中绝对定位和相对定位的区别

    先说个技巧一般用:子绝父相,即相对定位是给父级的,绝对定位的时候是给子级的. 一:绝对定位 position: absolute;绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定 ...

  5. vue drag 对表格的列进行拖动排序

    用drag实现拖动表格列进行列排序   以下是用到的主要方法   1.dragstart 拖动开始返回目标对象 2.dragenter 拖动过程中经过的对象 3.dragend 拖动结束返回目标对象 ...

  6. ArcGIS Pro开发Web3D应用(4)——Portal发布三维没有“发布”选项解决

    如题,将三维场景包.slpk上传并发布,未看到发布选项. 问题核心就在于环境没配置好,主要有2点: 1.验证联合托管状态 需要将托管服务器与Portal进行联合,并进行验证,此情况需要在WebAdap ...

  7. 4 - BFS & Topological Algorithm

    615. Course Schedule https://www.lintcode.com/problem/course-schedule/description?_from=ladder&& ...

  8. python 往mysql数据库中插入多条记录。

    最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...

  9. android -------- RecyclerView的可(多个Item水平,垂直)滚动列表的实现

    RecyclerView的可滚动的列表实现,视图相邻的视图在屏幕上部分或完全可见(水平3个item,第一个和第三个显示一部分,第二个完全显示) 效果如图: 基于RecyclerView完成的(自定义控 ...

  10. 添加本地nuget包

    1.找到vs工具栏,如下图所示,找到包管理器 2.点击添加按钮,添加源,点击下方浏览按钮,找到源得位置,然后点击更新 3.找到项目,切换包源,切换到包管理器得浏览页面,找到要添加得包安装即可.