【发布时间】:2012-08-09 16:40:45
【问题描述】:
我有一个 ComboBox,其中包含一个列表(这是组合框的标准),其中包含很多元素 - 超过 100 个。我想找到某些条目来选择它们。为了找到条目,我将给定模式与每个元素的名称进行比较。
出于性能原因(超过 100 个元素),我在父级上使用 CacheRequest,其范围为所有子级,因此我可以非常快速地遍历所有子级并找到我想要的子级的正确索引选择。
问题来了:我有我想要的正确索引,我也有缓存的 AutomationElement,但是由于我在 CacheRequest 中指定了 AutomationElementMode.None(我仍然需要测试它是否会对性能产生影响),我似乎无法将缓存的元素转换为可用于将来调用的元素(“实时”元素)。
我尝试通过NativeWindowHandle进行转换(因为有一个函数AutomationElement.FromWindowHandle),但是句柄似乎为0,所以这是没有办法的。
我还没有尝试使用缓存的 SelectionPattern - 因为组合框有时是自定义构建的,但我不知道这是否适用于所有情况(如果有的话)。
我有子索引,我可以获得所有可以缓存的值 - 我如何获得缓存元素的工作/实时 AutomationElement?
谢谢 安德烈亚斯
(在带有 win32 应用程序(作为自动化目标)的 Windows 7 64 上使用 C#,虽然这不会有太大的不同)
【问题讨论】:
标签: c# caching ui-automation microsoft-ui-automation