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

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

//定义一个Control类型的队列allCtrls
private static Queue <Control> allCtrls = new Queue<Control>();

public form1()
{
CheckAllCtrls(this);//调用很简单,把要遍历的放进参数即可。如果控件没有变化,则加载时调用一次即可。
}

//递归遍历所有的子孙控件包括容器类
private static void CheckAllCtrls(Control item )
{
for (int i = 0; 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下所有的按钮,无论有几层容器,都会变化。

就是这么简单。

有问题可以留言交流。

时间: 2024-08-30 03:25:11

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

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

import java.io.File; public class ReadDirectory { // 文件所在的层数 private int fileLevel; /** * 生成输出格式 * @param name 输出的文件名或目录名 * @param level 输出的文件名或者目录名所在的层次 * @return 输出的字符串 */ public String createPrintStr(String name, int level) { // 输出的前缀 String print

子页面如何获得母版页控件的值

有一个网友在问: 为了子页能访问到MasterPage母版页的控件,使用接口: 母版页实作这个接口 在子页的铵钮事件: 演示一下: 子页面如何获得母版页控件的值

WPF查找子控件和父控件方法[转帖]

WPF查找子控件和父控件方法 一.查找某种类型的子控件,并返回一个List集合 public List<T> GetChildObjects<T>(DependencyObject obj, Type typename) where T : FrameworkElement { DependencyObject child = null; List<T> childList = new List<T>(); for (int i = 0; i <= V

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

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控件中切换,但是切换焦点一直存在bug,具体的描述如下: 1.在主窗体里弹出新的窗体,当新窗体中存在CEditUI控件并且焦点在此CEditUI控件上,那么按tab键将无法切换焦点而一直处于CEditUI中.(只在新窗体中有此bug,主创体中没有,原因会在后面分析) 2.CWebBrowserUI控件

Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32位应用编程接口(Win32 API)和组件对象模型的一系列扩充和增强,目标是把计算机桌面环境与因特网环境集成起来,同时保护在Windows技术中现有的开发投资.微软的 ActiveX技术根本上就是修改过的OCX技术,使它能够跨越Internet,主要是使用WWW来传递控件.            A

winform-事件之公共控件

事件参数: object sender - 事件主体 EventArgs e - 事件数据 函数体 - 我进行的操作 制作思路: 做一个按钮,就只想这一个按钮的功能就行了 如果需要其它按钮来进行辅助,这个情况 只会出现在,你这个按钮做不下去了,才需要去考虑是否有其它按钮可以来帮忙的 ------------------------------------------------------------------------------------------------------------

VS2010/MFC常用控件:图片控件Picture Control

图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,名称设置为“

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

GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设置属性 处理事件等 多个键字段 用于超链接列的多个数据字段 可通过主题和样式自定义外观 Girdview控件常用属性: BackImageUrl 背景图片 EmptyDtatText 没有任何数据时显示的文字 GridLines 网格线的样式 ShowHeader 是否显示页首连接 ShowFoot

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

在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMethod("userInfor").Invoke(this.Page, null));    //获取到的值是object类型 2: 方法有参数(userInfor(int a,string b)) string userInfor = Convert.ToString(this.Page.