다음을 통해 공유


지원되는 UI 자동화 컨트롤 패턴 가져오기

참고 항목

이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows 자동화 API: UI 자동화를 참조하세요.

이 항목에서는 UI 자동화 요소에서 컨트롤 패턴 개체를 검색하는 방법을 보여 줍니다.

모든 컨트롤 패턴 가져오기

  1. 사용할 컨트롤 패턴이 있는 AutomationElement를 가져옵니다.

  2. 요소에서 모든 컨트롤 패턴을 가져오려면 GetSupportedPatterns를 호출합니다.

주의

클라이언트가 GetSupportedPatterns를 사용하지 않는 것이 좋습니다. 이 메서드는 기존의 각 컨트롤 패턴에 대해 내부적으로 GetCurrentPattern을 호출하기 때문에 성능에 심각한 영향을 줄 수 있습니다. 가능하면 클라이언트는 사용할 키 패턴에 대해 GetCurrentPattern을 호출해야 합니다.

특정 컨트롤 패턴 가져오기

  1. 사용할 컨트롤 패턴이 있는 AutomationElement를 가져옵니다.

  2. 특정 패턴을 쿼리하려면 GetCurrentPattern 또는 TryGetCurrentPattern를 호출합니다. 이러한 메서드는 비슷하지만, 해당 패턴을 찾을 수 없는 경우 GetCurrentPattern에서 예외가 발생하고 TryGetCurrentPatternfalse를 반환합니다.

예시

다음 예제에서는 목록 항목에 대해 AutomationElement를 검색하고 해당 요소에서 SelectionItemPattern을 가져옵니다.

/// <summary>
/// Sets the focus to a list and selects a string item in that list.
/// </summary>
/// <param name="listElement">The list element.</param>
/// <param name="itemText">The text to select.</param>
/// <remarks>
/// This deselects any currently selected items. To add the item to the current selection
/// in a multiselect list, use AddToSelection instead of Select.
/// </remarks>
public void SelectListItem(AutomationElement listElement, String itemText)
{
    if ((listElement == null) || (itemText == ""))
    {
        throw new ArgumentException("Argument cannot be null or empty.");
    }
    listElement.SetFocus();
    Condition cond = new PropertyCondition(
        AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase);
    AutomationElement elementItem = listElement.FindFirst(TreeScope.Children, cond);
    if (elementItem != null)
    {
        SelectionItemPattern pattern;
        try
        {
            pattern = elementItem.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine(ex.Message);  // Most likely "Pattern not supported."
            return;
        }
        pattern.Select();
    }
}
''' <summary>
''' Sets the focus to a list and selects a string item in that list.
''' </summary>
''' <param name="listElement">The list element.</param>
''' <param name="itemText">The text to select.</param>
''' <remarks>
''' This deselects any currently selected items. To add the item to the current selection 
''' in a multiselect list, use AddToSelection instead of Select.
''' </remarks>
Public Sub SelectListItem(ByVal listElement As AutomationElement, ByVal itemText As String)
    If listElement Is Nothing OrElse itemText = "" Then
        Throw New ArgumentException("Argument cannot be null or empty.")
    End If
    listElement.SetFocus()
    Dim cond As New PropertyCondition(AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase)
    Dim elementItem As AutomationElement = listElement.FindFirst(TreeScope.Children, cond)
    If Not (elementItem Is Nothing) Then
        Dim pattern As SelectionItemPattern
        Try
            pattern = DirectCast(elementItem.GetCurrentPattern(SelectionItemPattern.Pattern), _
                SelectionItemPattern)
        Catch ex As InvalidOperationException
            Console.WriteLine(ex.Message) ' Most likely "Pattern not supported."
            Return
        End Try
        pattern.Select()
    End If

End Sub

참고 항목