B. *_*non 2 c# generics lambda dynamic winforms
我想清除控件是标签的表单上的所有值,其名称以"label"开头
这段代码:
List<Label> lbls = this.Controls.OfType<Label>().ToList();
foreach (var lbl in lbls)
{
if (lbl.Name.StartsWith("label"))
{
lbl.Text = string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
...不起作用,因为lambda找不到任何东西--lbls.Count = 0.
这不会获得表单上的所有控件,即使是其他控件的子控件(例如,在我的情况下,Panels)?
尝试使用此方法:
public void ClearLabel(Control control)
{
if (control is Label)
{
Label lbl = (Label)control;
if (lbl.Text.StartsWith("label"))
lbl.Text = String.Empty;
}
else
foreach (Control child in control.Controls)
{
ClearLabel(child);
}
}
Run Code Online (Sandbox Code Playgroud)
您只需将表单传递给ClearLabel方法即可.