c#用递归遍历整个窗体上的子控件

遍历之后为什么找不到panel,datagrid?... 遍历之后为什么找不到panel,datagrid? 展开
 我来答
微软专家张海
推荐于2018-04-26 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
public void LoadAllControl(Control.ControlCollection ctls)
{
foreach (Control con in ctls)
{
Consol.WriteLine(con.Name);

if(con.Controls.Count>0) LoadAllControl(con.Controls);
}
}

//调用
LoadAllControl(this.controls);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疯狂的Allen哥
2009-07-08 · TA获得超过219个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:141万
展开全部
我这个可以万能检测所有空间是否为空,你看看是不是你想要的效果。

bool CheckAll(Control.ControlCollection coll)
{
foreach (Control var in coll)
{
if (var.Text == "")
{
lblmessage.ForeColor = Color.Red;
this.lblmessage.Text = var.Name + "为空!";
return false;
}
}
return true;
}

调用:
private void button1_Click(object sender, EventArgs e)
{
if (CheckAll(this.Controls) == true)
{
lblmessage.ForeColor = Color.Green;
this.lblmessage.Text = "Success";
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qwsdxxc
2009-07-08
知道答主
回答量:34
采纳率:0%
帮助的人:0
展开全部
楼主是要用到递归的吧

private void Search(Control con)
{
foreach (Control var in con.Controls)
{
MessageBox.Show(var.Name);
Search(var);自己掉自己是为递归
}
}

调用-测试,将当前窗体传入
private void button1_Click(object sender, EventArgs e)
{
Search(this);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wewewe7
2009-07-08 · TA获得超过180个赞
知道小有建树答主
回答量:560
采纳率:0%
帮助的人:331万
展开全部
foreach(control c in form.controls)
{
//得出来的是control 判断类型用typeof()
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式