我面临ValuePattern的问题。我有以下代码:

ValuePattern valuePattern = null;

try
{
        valuePattern = AElement.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
        valuePattern.SetValue(EditableElement.value[0].ToString());

        Debug.WriteLine(AElement.Current.Name + "'s value changed to {0}.", EditableElement.value[0].ToString());
}
catch (InvalidOperationException)
{
        Debug.WriteLine("Value pattern not supported for " + AElement.Current.Name);
        return;
}


我正在传递带有controltype.Edit的AutomationElement,当我检查该元素时,我会收到以下信息:

ControlType.Edit
    ValuePatternIdentifiers.Pattern
    LegacyIAccessiblePatternIdentifiers.Pattern
A first chance exception of type 'System.InvalidOperationException' occurred in       UIAComWrapper.dll
Value pattern not supported


没有人知道为什么说GetSupportedPatterns()中列出ValuePatternIdentifiers.Pattern时不支持valuepattern吗?

最佳答案

从检查可用模式到触发valuePatter.SetValue的时间间隔之间,模式有可能消失或变得不可用。

因此,我建议在触发valuePattern.SetValue并验证值模式的存在之前,只打印GetAllSupportedPatterns。

另外,如果您有UIAVerifier的副本,则始终可以尝试手动进行更改,如果Window Control或您的代码有问题,请隔离。

关于c# - 即使支持ValuePattern也无法使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18057376/

10-12 00:30