У меня есть ComboBox, содержащий список (который является стандартным для выпадающего списка), который содержит много элементов - более 100. Я хочу найти определенные записи, чтобы выбрать их. Чтобы найти записи, я сравниваю данный шаблон с именем каждого элемента.
Из соображений производительности (более 100 элементов) я использую CacheRequest для родителя с областью действия всех дочерних элементов, поэтому я могу быстро и красиво просмотреть все дочерние элементы и найти правильный индекс нужного дочернего элемента. выбрать.
Здесь возникает проблема: у меня есть правильный индекс, который я хочу, у меня также есть кэшированный AutomationElement, но, поскольку я указал AutomationElementMode.None в CacheRequest (мне все еще нужно проверить, влияет ли это на производительность) невозможно преобразовать кэшированный элемент в элемент, который я могу использовать для будущих вызовов («живой» элемент).
Я пробовал преобразование через NativeWindowHandle (так как есть функция AutomationElement.FromWindowHandle), но дескриптор, кажется, равен 0, так что это не так.
Я также еще не пытался использовать кэшированный SelectionPattern - поскольку ComboBox-ы иногда создаются на заказ, хотя я не знаю, будет ли это работать во всех случаях (если вообще будет).
У меня есть дочерний индекс, я могу получить все значения, которые я могу кэшировать - как я могу получить рабочий / живой AutomationElement кэшированного элемента?
Спасибо
Andreas
(использование C # в Windows 7 64 с приложением win32 (в качестве цели автоматизации), хотя это не должно иметь большого значения)