如何确定控件是否是其他控件的容器

本文关键字:控件 是否是 何确定 其他 | 更新日期: 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);

祝你好运。