工作上遇到界面控件太多,需要对一些控件批量处理。虽然可以用代码批量控制,但要么是建立数组集合把所有要处理的控件放进去循环处理,要么是一个一个列出来修改属性。
但我大多数要求改的控件命名上是有规律的,所有只需要循环拼接字符串就可以把所有控件的name处理出来,再找到每一个name对应的控件处理了就行了。
查找之后发现网上都是什么循环遍历、递归的操作之类来做到遍历所有控件及其子控件,其实不用那么难。可以直接调用窗体的controls集合的Find方法
只需要两个参数
参数一:控件的name
参数二:是否查询所有子控件
返回的参数就是Control类的数组
示例代码如下:
//比如这里要查找一个chart控件,并增加它某条线的点
string chart_name = "chart_ID" + i;
Control temp= this.Controls.Find(chart_name, true).FirstOrDefault();
//temp不为null时,就是找到对应控件了,增加这个判断可以防止异常
if(temp != null)
{
Chart chart = (Chart)temp;
chart.Series[4].Points.AddY(DataConvert.HexToDecimal(RSSI_curr));
}