我正在编写代码来遍历表单上的所有控件。除了Form.Controls
集合不包含其他控件包含的控件外,这似乎很简单。
好的,所以我尝试测试是否每个ctl is ContainerControl
,如果是,则递归迭代该容器控件中的控件。
好的,但事实证明GroupBox
控件并非来自ContainerControl
。它直接来自Control
。
我的代码是否有通用的方法来确定给定的控件是否包含其他控件?我假设有一个基本类型或接口可以做到这一点,但似乎并非如此。
答案 0 :(得分:2)
您可以使用Control.HasChildren
属性:
如果此控件在其集合中具有子控件,则为True。
if (ctl.HasChildren)
{
// true, if ctl has controls in it
}
答案 1 :(得分:0)
List<Control> AllFormsControl = new List<Control>();
public void InitContolList(Control nControl)
{
if (nControl.Controls.Count > 0)
{
foreach (Control item in nControl.Controls)
{
InitContolList(item);
AllFormsControl.Add(item);
}
}
// Optional
//AllFormsControl.Add(nControl);
}
然后你可以跑:
InitControlList(this);
祝你好运。