You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF中获取名称以lblinch开头的所有Label控件?

获取WPF中特定命名格式的Label控件集合

可以通过遍历可视化树的方式,找出所有名称符合lblinch、lblinch1、lblinch2...格式的Label控件,不管它们嵌套在哪个子容器里。以下是具体实现:

1. 实现递归遍历可视化树的方法

这个方法会逐层遍历所有子控件,筛选出符合命名规则的Label:

private IEnumerable<Label> FindAllInchLabels(DependencyObject parent)
{
    int childCount = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < childCount; i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(parent, i);
        
        if (child is Label label)
        {
            // 用正则匹配命名格式:开头是lblinch,后面可跟任意数量数字(包括0个)
            if (System.Text.RegularExpressions.Regex.IsMatch(label.Name, @"^lblinch\d*$"))
            {
                yield return label;
            }
        }
        
        // 递归遍历当前控件的子元素
        foreach (Label subLabel in FindAllInchLabels(child))
        {
            yield return subLabel;
        }
    }
}

2. 调用方法获取控件集合

在窗口加载完成后(比如Loaded事件中)调用上述方法,将结果存入集合或数组:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // 获取所有符合条件的Label,存入泛型List(推荐,类型安全)
    List<Label> inchLabels = FindAllInchLabels(this).ToList();
    
    // 转成数组
    Label[] inchLabelArray = inchLabels.ToArray();
    
    // 如果一定要用ArrayList(不推荐,泛型集合更高效安全)
    System.Collections.ArrayList arrayList = new System.Collections.ArrayList(inchLabels);
}

注意事项

  • 必须在控件加载完成后调用,否则可能找不到未初始化的控件;
  • 正则表达式^lblinch\d*$精准匹配命名规则,确保不会误抓其他名称的Label;
  • 优先使用List<Label>而非ArrayList,避免装箱拆箱的性能开销,同时保证类型安全。

内容的提问来源于stack exchange,提问作者BebsiMaks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:25:52