AutomationElement.GetCurrentPattern(AutomationPattern) 方法

定義

在此 AutomationElement 上擷取指定的模式物件。Retrieves the specified pattern object on this AutomationElement.

public:
 System::Object ^ GetCurrentPattern(System::Windows::Automation::AutomationPattern ^ pattern);
public object GetCurrentPattern (System.Windows.Automation.AutomationPattern pattern);
member this.GetCurrentPattern : System.Windows.Automation.AutomationPattern -> obj
Public Function GetCurrentPattern (pattern As AutomationPattern) As Object

參數

pattern
AutomationPattern

要擷取之模式的識別碼。The identifier of the pattern to retrieve.

傳回

模式物件 (若指定的模式受 AutomationElement 支援)。The pattern object, if the specified pattern is currently supported by the AutomationElement.

例外狀況

項目不支援此模式。The pattern is not supported by the element.

AutomationElement 的 UI 不再存在。The UI for the AutomationElement no longer exists.

範例

下列範例顯示如何使用這個方法來SelectionItemPattern抓取,然後用它來選取清單方塊中的專案。The following example shows how to use this method to retrieve a SelectionItemPattern, which is then used to select an item in a list box.

/// <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

注意

針對經常重複的工作(例如範例中的工作),快取模式並使用GetCachedPattern會更有效率。For often-repeated tasks such as the one in the example, it would be more efficient to cache the pattern and use GetCachedPattern.

備註

GetCurrentPattern根據呼叫時的可用性,取得指定的模式。GetCurrentPattern gets the specified pattern based on its availability at the time of the call.

針對某些形式的UIUI,這個方法會產生跨進程的效能負擔。For some forms of UIUI, this method will incur cross-process performance overhead. 應用程式可以藉由快取模式來專注于負荷, GetCachedPattern然後使用加以抓取。Applications can concentrate overhead by caching patterns and then retrieving them by using GetCachedPattern.

適用於

另請參閱