AutomationElement.FindFirst(TreeScope, Condition) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает первый дочерний элемент или элемент-потомок, который соответствует заданному условию.
public:
System::Windows::Automation::AutomationElement ^ FindFirst(System::Windows::Automation::TreeScope scope, System::Windows::Automation::Condition ^ condition);
public System.Windows.Automation.AutomationElement FindFirst (System.Windows.Automation.TreeScope scope, System.Windows.Automation.Condition condition);
member this.FindFirst : System.Windows.Automation.TreeScope * System.Windows.Automation.Condition -> System.Windows.Automation.AutomationElement
Public Function FindFirst (scope As TreeScope, condition As Condition) As AutomationElement
Параметры
- scope
- TreeScope
Битовая комбинация значений, определяющая область поиска.
- condition
- Condition
Объект, содержащий критерии соответствия.
Возвращаемое значение
Первый элемент, который удовлетворяет условию, или значение null
, если соответствие не найдено.
Примеры
В следующем примере показано, как найти дочернее окно по его идентификатору.
/// <summary>
/// Find a UI Automation child element by ID.
/// </summary>
/// <param name="controlName">Name of the control, such as "button1"</param>
/// <param name="parentElement">Parent element, such as an application window, or the
/// AutomationElement.RootElement when searching for the application window.</param>
/// <returns>The UI Automation element.</returns>
private AutomationElement FindChildElement(String controlName, AutomationElement rootElement)
{
if ((controlName == "") || (rootElement == null))
{
throw new ArgumentException("Argument cannot be null or empty.");
}
// Set a property condition that will be used to find the main form of the
// target application. In the case of a WinForms control, the name of the control
// is also the AutomationId of the element representing the control.
Condition propCondition = new PropertyCondition(
AutomationElement.AutomationIdProperty, controlName, PropertyConditionFlags.IgnoreCase);
// Find the element.
return rootElement.FindFirst(TreeScope.Element | TreeScope.Children, propCondition);
}
''' <summary>
''' Find a UI Automation child element by ID.
''' </summary>
''' <param name="controlName">Name of the control, such as "button1"</param>
''' <param name="rootElement">Parent element, such as an application window, or the
''' AutomationElement.RootElement when searching for the application window.</param>
''' <returns>The UI Automation element.</returns>
Private Function FindChildElement(ByVal controlName As String, ByVal rootElement As AutomationElement) _
As AutomationElement
If controlName = "" OrElse rootElement Is Nothing Then
Throw New ArgumentException("Argument cannot be null or empty.")
End If
' Set a property condition that will be used to find the main form of the
' target application. In the case of a WinForms control, the name of the control
' is also the AutomationId of the element representing the control.
Dim propCondition As New PropertyCondition(AutomationElement.AutomationIdProperty, _
controlName, PropertyConditionFlags.IgnoreCase)
' Find the element.
Return rootElement.FindFirst(TreeScope.Element Or TreeScope.Children, propCondition)
End Function 'FindChildElement
Комментарии
Область поиска определяется относительно элемента, для которого вызывается метод .
При поиске окна верхнего уровня на рабочем столе укажите Children в scope
, а не Descendants. Поиск по всему поддереву рабочего стола может выполнить итерацию по тысячам элементов и привести к переполнению стека.
Если клиентское приложение может попытаться найти элементы в собственном пользовательском интерфейсе, необходимо выполнить все вызовы модель автоматизации пользовательского интерфейса в отдельном потоке.