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下所有的按钮,无论有几层容器,都会变化。
就是这么简单。
有问题可以留言交流。