次の方法で共有


AutomationElement.GetUpdatedCache(CacheRequest) メソッド

定義

更新されたキャッシュを持つ新しい AutomationElement を取得します。

public:
 System::Windows::Automation::AutomationElement ^ GetUpdatedCache(System::Windows::Automation::CacheRequest ^ request);
public System.Windows.Automation.AutomationElement GetUpdatedCache (System.Windows.Automation.CacheRequest request);
member this.GetUpdatedCache : System.Windows.Automation.CacheRequest -> System.Windows.Automation.AutomationElement
Public Function GetUpdatedCache (request As CacheRequest) As AutomationElement

パラメーター

request
CacheRequest

更新されたキャッシュに含めるパターンとプロパティ。

戻り値

更新されたキャッシュを持つ新しい AutomationElement

次の例では、コンボ ボックス内の選択が変更されるたびにキャッシュを更新する方法を示します。

CacheRequest comboCacheRequest;
AutomationEventHandler selectHandler;
AutomationElement elementCombo;
AutomationElement selectedItem;

/// <summary>
/// Retrieves a combo box automation element, caches a pattern and a property,
/// and registers the event handler.
/// </summary>
/// <param name="elementAppWindow">The element for the parent window.</param>
private void SetupComboElement(AutomationElement elementAppWindow)
{
    // Set up the CacheRequest.
    comboCacheRequest = new CacheRequest();
    comboCacheRequest.Add(SelectionPattern.Pattern);
    comboCacheRequest.Add(SelectionPattern.SelectionProperty);
    comboCacheRequest.Add(AutomationElement.NameProperty);
    comboCacheRequest.TreeScope = TreeScope.Element | TreeScope.Descendants;

    // Activate the CacheRequest and get the element.
    using (comboCacheRequest.Activate())
    {
        // Load the combo box element and cache the specified properties and patterns.
        Condition propCondition = new PropertyCondition(
            AutomationElement.AutomationIdProperty, "comboBox1", PropertyConditionFlags.IgnoreCase);
        elementCombo = elementAppWindow.FindFirst(TreeScope.Descendants, propCondition);
    }

    // Get the list from the combo box.
    Condition propCondition1 = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List);
    AutomationElement listElement = elementCombo.FindFirst(TreeScope.Children, propCondition1);

    // Register for ElementSelectedEvent on list items.
    if (listElement != null)
    {
        Automation.AddAutomationEventHandler(SelectionItemPattern.ElementSelectedEvent, listElement,
            TreeScope.Children, selectHandler = new AutomationEventHandler(OnListItemSelect));
    }
}

/// <summary>
/// Handle ElementSelectedEvent on items in the combo box.
/// </summary>
/// <param name="src">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
private void OnListItemSelect(object src, AutomationEventArgs e)
{
    // Update the cache.
    AutomationElement updatedElement = elementCombo.GetUpdatedCache(comboCacheRequest);

    // Retrieve the pattern and the selected item from the cache. This code is here only to 
    // demonstrate that the current selection can now be retrieved from the cache. In an application,
    // this would be done only when the information was needed.
    SelectionPattern pattern = updatedElement.GetCachedPattern(SelectionPattern.Pattern) as SelectionPattern;
    AutomationElement[] selectedItems = pattern.Cached.GetSelection();
    selectedItem = selectedItems[0];
}
Private comboCacheRequest As CacheRequest
Private selectHandler As AutomationEventHandler
Private elementCombo As AutomationElement
Private selectedItem As AutomationElement


''' <summary>
''' Retrieves a combo box automation element, caches a pattern and a property,
''' and registers the event handler.
''' </summary>
''' <param name="elementAppWindow">The element for the parent window.</param>
Private Sub SetupComboElement(ByVal elementAppWindow As AutomationElement)
    ' Set up the CacheRequest.
    comboCacheRequest = New CacheRequest()
    comboCacheRequest.Add(SelectionPattern.Pattern)
    comboCacheRequest.Add(SelectionPattern.SelectionProperty)
    comboCacheRequest.Add(AutomationElement.NameProperty)
    comboCacheRequest.TreeScope = TreeScope.Element Or TreeScope.Descendants

    ' Activate the CacheRequest and get the element.
    Using comboCacheRequest.Activate()
        ' Load the combo box element and cache the specified properties and patterns.
        Dim propCondition As New PropertyCondition(AutomationElement.AutomationIdProperty, "comboBox1", PropertyConditionFlags.IgnoreCase)
        elementCombo = elementAppWindow.FindFirst(TreeScope.Descendants, propCondition)

        ' Get the list from the combo box.
        Dim propCondition1 As New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List)
        Dim listElement As AutomationElement = elementCombo.FindFirst(TreeScope.Children, propCondition1)

        ' Register for ElementSelectedEvent on list items.
        selectHandler = New AutomationEventHandler(AddressOf OnListItemSelect)
        If (listElement IsNot Nothing) Then
            Automation.AddAutomationEventHandler(SelectionItemPattern.ElementSelectedEvent, listElement, _
            TreeScope.Children, selectHandler)
        End If
    End Using

End Sub


''' <summary>
''' Handle ElementSelectedEvent on items in the combo box.
''' </summary>
''' <param name="src">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
Private Sub OnListItemSelect(ByVal src As Object, ByVal e As AutomationEventArgs)
    ' Update the cache.
    Dim updatedElement As AutomationElement = elementCombo.GetUpdatedCache(comboCacheRequest)

    ' Retrieve the pattern and the selected item from the cache. This code is here only to 
    ' demonstrate that the current selection can now be retrieved from the cache. In an application,
    ' this would be done only when the information was needed.
    Dim pattern As SelectionPattern = _
        DirectCast(updatedElement.GetCachedPattern(SelectionPattern.Pattern), SelectionPattern)
    Dim selectedItems As AutomationElement() = pattern.Cached.GetSelection()
    selectedItem = selectedItems(0)

End Sub

注釈

AutomationElement の は変更されません。 GetUpdatedCacheは、同じユーザー インターフェイス (UI) を参照し、同じ RuntimeIdPropertyを持つ新しい AutomationElementを返します。

適用対象

こちらもご覧ください