获取UIAutomation组合框的选定值

时间:2014-06-12 07:56:37

标签: c# windows winforms ui-automation

我尝试使用UIAutomation获取组合框的选定值。到目前为止,我的代码如下:

var cbx = tree.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "desktopCbx"));
var value = cbx.Current.Name;

它没有给我正确的价值。我怎样才能找到合适的人?

2 个答案:

答案 0 :(得分:1)

ComboBox AutomationElement实现了ValuePattern。您可以使用此模式设置或获取ComboBox的选定值。

我在我的框架中使用这些方法来设置和获取支持ValuePattern的AutomationElement的值:

public static string Element_GetValue(AutomationElement control)
{
    string value = null;

    object patternProvider;
    if (control.TryGetCurrentPattern(ValuePattern.Pattern, out patternProvider))
    {
        ValuePattern valuePatternProvider = patternProvider as ValuePattern;
        value = valuePatternProvider.Current.Value;
    }

    return value;
}

public static bool Element_SetValue(AutomationElement control, string value)
{
    object patternProvider;
    if (control.TryGetCurrentPattern(ValuePattern.Pattern, out patternProvider))
    {
        ValuePattern valuePatternProvider = patternProvider as ValuePattern;
        valuePatternProvider.SetValue(value);

        return true;
    }

    return false;
}

在您的方案中,您可以使用Element_GetValue()方法,如下所示:

var cbx = tree.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "desktopCbx"));
var value = Element_GetValue(cbx);

答案 1 :(得分:0)

通常,Combobox是一个复合控件,包含编辑控件,按钮(用于下拉列表)和列表。 所选项目文本通常是组合框的编辑控件子项的属性。

UI Spy应该很快清除它。