我面临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/