我使用这样的方法返回容器中的所有控件:
public static IEnumerable<Control> NestedControls(this Control container, bool search_all_children = true)
{
var stack = new Stack<Control>();
stack.Push(container);
do
{
var control = stack.Pop();
foreach (Control child in control.Controls)
{
yield return child;
stack.Push(child);
}
}
while (stack.Count > 0 && search_all_children);
}
这样我就可以得到所有的控件:
var textboxes = panel1.NestedControls().OfType<TextBox>().ToList();
但是,通过在方法中添加额外的代码片段,我不能只获取容器中特定类型的控件.对于下面这样的代码,我应该如何更新方法?
var textboxes = panel1.NestedControls(TextBox);