如何获取父控件的所有子控件?
我正在寻找一个代码示例,如何获取父控件的所有子控件。
我不知道该怎么做。
foreach (Control control in Controls)
{
if (control.HasChildren)
{
??
}
}
I'm looking for an code example how to get all children of parent control.
I have no idea how do it.
foreach (Control control in Controls)
{
if (control.HasChildren)
{
??
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您只想要直接子级,请使用
如果您想要层次结构中的所有控件(即树中某个控件下的所有控件),请使用非常简单的数据递归方法:
然后,您可以在表单中使用类似的方法:
If you only want the immediate children, use
If you want all controls from the hierarchy (ie, everything in the tree under a certain control), use a pretty simple data-recursive method:
Then, you might use something like this in a form:
控件有一个
MyControl.Controls
集合,您可以对其执行foreach
操作。每个控件还有一个
Parent
属性,为您提供父控件。如果您需要下降未知数量的级别,您可以编写递归方法。
Controls have a
MyControl.Controls
collection which you can do aforeach
on.Each Control also has a
Parent
property which gives you the parent control.You can write a recursive method if you need to go down an unknown number of levels.
也许它对某人有用:
这是一个递归函数,用于获取可以应用过滤器的控件集合(例如按类型)。示例:
它将返回 rootControl 中的所有 DropDownList 及其所有子项
Maybe it could be useful for someone:
This is recursive function to get the collection of controls with the possibility of appling filter (for expample by type). And the example:
It will return all DropDownLists in rootControl and his all children
可能过于复杂,但使用 Linq 和上面/其他地方的一些想法:
Probably overly complicated, but using Linq and some ideas from above / other places:
这是使用 Linq 的简洁递归扩展函数:
Here's a concise recursive extension function using Linq: