根据参数获取控件类型的所有实例

时间:2015-08-12 15:25:15

标签: c# generics controls

是否有办法根据其他一些信息获取特定控件类型的所有实例。通常我会用;

       public static IEnumerable<T> GetAllControlsOfType<T>(this Control parent) where T : Control
    {
        var result = new List<T>();

        foreach (Control control in parent.Controls)
        {
            if (control is T)
            {
                result.Add((T)control);
            }
            if (control.HasControls())
            {
                result.AddRange(control.GetAllControlsOfType<T>());
            }
        }
        return result;
    }

但这不会起作用,因为我事先并不知道我将寻找哪种控制类型。

1 个答案:

答案 0 :(得分:0)

如果您只知道运行时的类型,那么您可以使用Type.IsInstanceOfType  而不是&#34;控制是T&#34;在你的例子中。该函数需要一个Type参数并返回一个IEnumerable&lt; Control&gt;。