Windows UI 组合框的自动化 select 项

Windows UI Automation select item of combobox

我正在尝试 select 使用 Windows UI 自动化 API.

基于其价值的项目

我有一个 class ComboBox 继承自 UIAutomation.Element.

此外,我在这个组合框元素上有一个方法,应该可以用 string 到 select 匹配的组合框项目

调用

我试过以下方法:

public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
    var comboboxItem = this.GetSelf(timeout).FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));

    var expandCollapsePattern = (ExpandCollapsePattern)this.GetSelf(timeout).GetCurrentPattern(ExpandCollapsePattern.Pattern);
    expandCollapsePattern.Expand();
    var itemToSelect = ?????

    var selectItemPattern = (SelectionItemPattern)itemToSelect.GetCurrentPattern(SelectionItemPattern.Pattern);
    selectItemPattern.Select();
}

但我真的不知道如何在 var itemToSelect = ????? 行检索正确的项目。

变量 comboboxItem 的类型是 AutomationElementCollection 但不幸的是,Linq 似乎不能使用这种类型...

你知道如何检索正确的项目吗?

还是我做错了什么?

提前致谢

在@TnTinMn 的提示下找到了答案,谢谢! :-)

public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
    this.GetSelf(timeout).Expand();

    var list = this.GetSelf(timeout).FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List), timeout);
    var listItem = list.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, itemName), timeout);

    listItem.Select();
}