Obsługa wzorców formantów dostawcy automatyzacji interfejsu użytkownikaSupport Control Patterns in a UI Automation Provider

Uwaga

Ta dokumentacja jest przeznaczona dla .NET Framework deweloperów, którzy chcą korzystać z zarządzanych Automatyzacja interfejsu użytkownikaUI Automation klas zdefiniowanych w System.Windows.Automation przestrzeni nazw.This documentation is intended for .NET Framework developers who want to use the managed Automatyzacja interfejsu użytkownikaUI Automation classes defined in the System.Windows.Automation namespace. Aby uzyskać najnowsze informacje na temat Automatyzacja interfejsu użytkownikaUI Automation , zobacz interfejs API usługi Windows Automation: Automatyzacja interfejsu użytkownika.For the latest information about Automatyzacja interfejsu użytkownikaUI Automation, see Windows Automation API: UI Automation.

W tym temacie przedstawiono sposób implementacji co najmniej jednego wzorca kontroli dla dostawcy automatyzacji interfejsu użytkownika, dzięki czemu aplikacje klienckie mogą manipulować kontrolkami i pobierać z nich dane.This topic shows how to implement one or more control patterns on a UI Automation provider so that client applications can manipulate controls and get data from them.

Obsługa wzorców kontrolekSupport Control Patterns

  1. Zaimplementuj odpowiednie interfejsy dla wzorców kontrolek, które element powinien obsługiwać, na przykład IInvokeProvider InvokePattern .Implement the appropriate interfaces for the control patterns that the element should support, such as IInvokeProvider for InvokePattern.

  2. Zwróć obiekt zawierający implementację każdego interfejsu sterowania w implementacji programuIRawElementProviderSimple.GetPatternProviderReturn the object containing your implementation of each control interface in your implementation of IRawElementProviderSimple.GetPatternProvider

PrzykładExample

W poniższym przykładzie przedstawiono implementację ISelectionProvider dla niestandardowego pola listy o pojedynczym zaznaczeniu.The following example shows an implementation of ISelectionProvider for a single-selection custom list box. Zwraca trzy właściwości i pobiera aktualnie wybrany element.It returns three properties and gets the currently selected item.

#region ISelectionProvider Members

/// <summary>
/// Specifies whether selection of more than one item at a time is supported.
/// </summary>
public bool CanSelectMultiple
{
    get
    {
        return false;
    }
}

/// <summary>
/// Specifies whether the list has to have an item selected at all times.
/// </summary>
public bool IsSelectionRequired
{
    get
    {
        return true;
    }
}

/// <summary>
/// Returns the automation provider for the selected list item.
/// </summary>
/// <returns>The selected item.</returns>
/// <remarks>
/// MyList is an ArrayList collection of providers for items in the list box.
/// SelectedIndex is the index of the selected item.
/// </remarks>
public IRawElementProviderSimple[] GetSelection()
{
    if (SelectedIndex >= 0)
    {
        IRawElementProviderSimple itemProvider = (IRawElementProviderSimple)MyList[SelectedIndex];
        IRawElementProviderSimple[] providers =  { itemProvider };
        return providers;
    }
    else
    {
        return null;
    }
}
#endregion ISelectionProvider Members
#Region "ISelectionProvider Members"

    ''' <summary>
    ''' Specifies whether selection of more than one item at a time is supported.
    ''' </summary>

    Public ReadOnly Property CanSelectMultiple() As Boolean _
        Implements ISelectionProvider.CanSelectMultiple
        Get
            Return False
        End Get
    End Property
    ''' <summary>
    ''' Specifies whether the list has to have an item selected at all times.
    ''' </summary>

    Public ReadOnly Property IsSelectionRequired() As Boolean _
        Implements ISelectionProvider.IsSelectionRequired
        Get
            Return True
        End Get
    End Property

    ''' <summary>
    ''' Returns the automation provider for the selected list item.
    ''' </summary>
    ''' <returns>The selected item.</returns>
    ''' <remarks>
    ''' MyList is an ArrayList collection of providers for items in the list box.
    ''' SelectedIndex is the index of the selected item.
    ''' </remarks>
    Public Function GetSelection() As IRawElementProviderSimple() _
        Implements ISelectionProvider.GetSelection
        If SelectedIndex >= 0 Then
            Dim itemProvider As IRawElementProviderSimple = DirectCast(MyList(SelectedIndex), IRawElementProviderSimple)
            Dim providers(1) As IRawElementProviderSimple
            providers(0) = itemProvider
            Return providers
        Else
            Return Nothing
        End If

    End Function 'GetSelection 
#End Region
    Private Members As ISelectionProvider

PrzykładExample

W poniższym przykładzie przedstawiono implementację GetPatternProvider , która zwraca klasę implementującą ISelectionProvider .The following example shows an implementation of GetPatternProvider that returns the class implementing ISelectionProvider. Większość formantów pola listy obsługuje inne wzorce, ale w tym przykładzie odwołanie null ( Nothing w Microsoft Visual Basic .NET) jest zwracane dla wszystkich innych identyfikatorów wzorców.Most list box controls would support other patterns as well, but in this example a null reference (Nothing in Microsoft Visual Basic .NET) is returned for all other pattern identifiers.

/// <summary>
/// Returns the object that supports the specified pattern.
/// </summary>
/// <param name="patternId">ID of the pattern.</param>
/// <returns>Object that implements IInvokeProvider.</returns>
/// <remarks>
/// In this case, the ISelectionProvider interface is implemented in another provider-defined class,
/// ListPattern. However, it could be implemented in the base provider class, in which case the
/// method would simply return "this".
/// </remarks>
object IRawElementProviderSimple.GetPatternProvider(int patternId)
{
    if (patternId == SelectionPatternIdentifiers.Pattern.Id)
    {
        return new ListPattern(myItems, SelectedIndex);
    }
    else
    {
        return null;
    }
}
''' <summary>
''' Returns the object that supports the specified pattern.
''' </summary>
''' <param name="patternId">ID of the pattern.</param>
''' <returns>Object that implements IInvokeProvider.</returns>
''' <remarks>
''' In this case, the ISelectionProvider interface is implemented in another provider-defined class, 
''' ListPattern. However, it could be implemented in the base provider class, in which case the 
''' method would simply return "this".
''' </remarks>
Function GetPatternProvider(ByVal patternId As Integer) As Object _
    Implements IRawElementProviderSimple.GetPatternProvider

    If patternId = SelectionPatternIdentifiers.Pattern.Id Then
        Return New ListPattern(myItems, SelectedIndex)
    Else
        Return Nothing
    End If

End Function 'IRawElementProviderSimple.GetPatternProvider

Zobacz takżeSee also