如何获取表单上的所有标签并将具有特定名称模式的Text属性设置为string.empty?

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)?

Dan*_*vić 6

尝试使用此方法:

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方法即可.