c# 怎么遍历当前窗体的所有控件,包括容器

首先我不知道里面有多少容器和多少容器种类,想遍历所有的控件,来做一些事情,网上看到个封装代码,并没有卵用,这还不是和foreach类似的代码?请问有没有办法遍历所有的。p... 首先我不知道里面有多少容器和多少容器种类,想遍历所有的控件,来做一些事情,网上看到个封装代码,并没有卵用,这还不是和foreach类似的代码?请问有没有办法遍历所有的。
public void GetAllControls(Control control)
{
List < Control > c= null;
foreach (Control con in control.Controls)
{
if (con.Controls.Count > 0)
{
GetAllControls(con);
}
}
}
展开
 我来答
百度网友5298263
2016-11-04 · TA获得超过967个赞
知道小有建树答主
回答量:1005
采纳率:94%
帮助的人:520万
展开全部

这个代码可以用 原理就是递归遍历所有控件

我来改造下吧

返回所有子控件列表

public List<Control> GetAllControls(Control control)
{
   var list=new List<Control>();
   foreach (Control con in control.Controls)
   {
      list.Add(con);
      if (con.Controls.Count > 0)
      {
          list.AddRange(GetAllControls(con));
      }
   }
   return list;
}
更多追问追答
追问
你说的这个我之前也改了,理解这种做法,我现在最关心的是GetAllControls(Control control)里面的control这个参数该设什么,不会告诉我就是容器的Control吧,那就大条了。
追答
var list=GetAllControls(form1);//获取form1所有子控件
var list=GetAllControls(groupBox1);//获取groupBox1所有子控件
太马小1D
2016-11-04 · TA获得超过349个赞
知道小有建树答主
回答量:397
采纳率:80%
帮助的人:65.2万
展开全部
public void GetAllControls(Control control)
{
if (control is TextBox)
{
。。。。。。
}
else if (control is ComboBox)
{
。。。。。。
}
else if (control is TreeView)
{
。。。。。。
}
else if (control is RadioButton)
{
。。。。。。
}
else if (control is DateTimePicker)
{
。。。。。。
}
else
{
foreach (Control control1 in control.Controls)
{
GetAllControls(control1);
}
}
}
追问
这方法感觉实在没办法了,才用这种
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式