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);
}
}
} 展开
public void GetAllControls(Control control)
{
List < Control > c= null;
foreach (Control con in control.Controls)
{
if (con.Controls.Count > 0)
{
GetAllControls(con);
}
}
} 展开
2个回答
展开全部
这个代码可以用 原理就是递归遍历所有控件
我来改造下吧
返回所有子控件列表
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所有子控件
展开全部
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);
}
}
}
{
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);
}
}
}
追问
这方法感觉实在没办法了,才用这种
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询