如何确定控件是否是其他控件的容器
本文关键字:控件 是否是 何确定 其他 | 更新日期: 2023-09-27 17:56:23
我正在编写代码来循环访问窗体上的所有控件。这看起来很简单,除了 Form.Controls
集合不包括其他控件包含的控件。
好的,所以我尝试测试以查看每个是否ctl is ContainerControl
,如果是,递归遍历该容器控件中的控件。
好的,但事实证明GroupBox
控件不是从ContainerControl
派生的。它直接派生自Control
。
我的代码是否有任何通用方法来确定给定控件是否包含其他控件?我假设会有一个基本类型或接口可以做到这一点,但事实似乎并非如此。
您可以使用 Control.HasChildren
属性:
如果此控件的集合中具有子控件,则为 True。
if (ctl.HasChildren)
{
// true, if ctl has controls in it
}
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);
祝你好运。