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

标签 c# winforms generics dynamic lambda

我想清除控件是标签且名称以“label”开头的表单上的所有值

这段代码:

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。

这不会获得表单上的所有控件,甚至是其他控件(例如,在我的例子中是 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);
       }

}

您只需将表单传递给 ClearLabel 方法即可。

关于c# - 如何获取表单上的所有标签并将具有特定名称模式的标签的 Text 属性设置为 string.empty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808943/

相关文章:

c# - 如果发布后模型中的值发生变化,表单仍显示旧值

c# - Javascript DATE 和 C# date - 什么是最好的解决方案?

c# - 生成方法调用的代码。生成的 C# 代码显示的声明局部变量比 IL 代码中实际存在的变量多?

JAVA:类型参数隐藏类类型

java - 泛型扩展

Swift 创建函数闭包,支持缩短的美元符号语法

c# - 将多个数据表链接到同一个数据库表

c# - 获取在数组中的文本框中输入的数字

c# - Windows 窗体应用程序中未处理的异常

winforms - 在运行时调用多线程 DLL