UI オートメーション プロバイダーでのコントロール パターンのサポート

Note

このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。

このトピックでは、クライアント アプリケーションがコントロールを操作して、それらからデータを取得できるように、UI オートメーション プロバイダーに 1 つ以上のコントロール パターンを実装する方法を説明します。

コントロール パターンのサポート

  1. IInvokeProviderInvokePatternなど、要素がサポートする必要のあるコントロール パターンの適切なインターフェイスを実装します。

  2. IRawElementProviderSimple.GetPatternProvider

例 1

単一選択のカスタム リスト ボックスの ISelectionProvider の実装例を次に示します。 3 つのプロパティを返し、現在選択されている項目を取得します。

#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

例 2

GetPatternProvider を実装するクラスを返す ISelectionProviderの実装例を次に示します。 ほとんどのリスト ボックス コントロールは、同様にその他のパターンをサポートしますが、次の例では、他のすべてのパターン識別子に対して null 参照 (Microsoft Visual Basic .NET では Nothing) が返されます。

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

関連項目