1

我有一个对象树,它在表父级中有行对象。我正在尝试将所有这些行放入AutomationElementCollection

AutomationElementCollection asdf = ParentTableObj.FindAll
     (
     TreeScope.Children,
     new PropertyCondition
          (
          AutomationElement.NameProperty,
          "I want to use regex here"
          )
     );

所有行都AutomationElement.NameProperty包含字符串“行”。但是,它们是该字符串的变体 - 例如“Row1”、“Row2”、“TopRow”……

似乎我可能遗漏了一些东西,因为该FindAll方法允许您定义TreeScope并找到与提供的参数AutomationElement匹配的any 。Condition我只是希望我的条件不受限制,因为我已经可以通过TreeScope.

4

2 回答 2

4
//Example :
AutomationElement element = FindFirstDescendant( 
    AutomationElement.FromHandle(windows_hWnd), 
    (ele)=>Regex.IsMatch( ele.Current.Name, pattern)
);

//The generic method to find a descendant element:
public static AutomationElement FindFirstDescendant(AutomationElement element, Func<AutomationElement, bool> condition) {
    var walker = TreeWalker.ControlViewWalker;
    element = walker.GetFirstChild(element);
    while (element != null) {
        if (condition(element))
            return element;
        var subElement = FindFirstDescendant(element, condition);
        if (subElement != null)
            return subElement;
        element = walker.GetNextSibling(element);
    }
    return null;
}
于 2013-10-16T18:18:06.613 回答
3

正如文档所述,您可以要求进行不区分大小写的比较。没有“正则表达式”标志。您将不得不手动进行过滤。

于 2013-02-15T02:55:09.393 回答