【发布时间】:2012-10-09 21:49:47
【问题描述】:
我想清除控件为标签且名称以“标签”开头的表单上的所有值
这段代码:
List<Label> lbls = this.Controls.OfType<Label>().ToList();
foreach (var lbl in lbls)
{
if (lbl.Name.StartsWith("label"))
{
lbl.Text = string.Empty;
}
}
...不起作用,因为 lambda 什么也没找到 - lbls.Count = 0。
这不会得到表单上的所有控件,即使是其他控件的子控件(例如,在我的例子中,面板)?
【问题讨论】:
-
不,它只在父容器中找到控件。但我假设你知道你想找到什么。因此,您只需指定要搜索的容器。您可以使用
Concat添加所有标签。 -
我认为这不会递归搜索所有容器
-
不,this.Controls 只包含第一级控件。直接托管在表单表面上的那些。
标签: c# winforms generics dynamic lambda