Export (0) Print
Expand All

ExpandCollapsePattern.Expand Method

Displays all child nodes, controls, or content of the AutomationElement.

Namespace:  System.Windows.Automation
Assembly:  UIAutomationClient (in UIAutomationClient.dll)

public void Expand()

ExceptionCondition
InvalidOperationException

Expand is called when the ExpandCollapseState = LeafNode.

This is a blocking method that returns after the AutomationElement has been expanded.

There are cases when a AutomationElementthat is marked as a leaf node might not know whether it has children until either the Collapse or the Expand method is called. This behavior is possible with a tree view control that does delayed loading of its child items. For example, Microsoft Windows Explorer might display the expand icon for a node even though there are currently no child items; when the icon is clicked, the control polls for child items, finds none, and removes the expand icon. In these cases clients should listen for a property-changed event on the ExpandCollapseState property by registering an event handler with the AddAutomationPropertyChangedEventHandler method.

In the following example, an AutomationElementrepresenting a menu item is passed to a function that attempts to expand or collapse the menu item based on its current ExpandCollapseState.

///-------------------------------------------------------------------- 
/// <summary> 
/// Obtains an ExpandCollapsePattern control pattern from an  
/// automation element. 
/// </summary> 
/// <param name="targetControl">
/// The automation element of interest. 
/// </param> 
/// <returns> 
/// A ExpandCollapsePattern object. 
/// </returns> 
///-------------------------------------------------------------------- 
private ExpandCollapsePattern GetExpandCollapsePattern(
    AutomationElement targetControl)
{
    ExpandCollapsePattern expandCollapsePattern = null;

    try
    {
        expandCollapsePattern =
            targetControl.GetCurrentPattern(
            ExpandCollapsePattern.Pattern)
            as ExpandCollapsePattern;
    }
    // Object doesn't support the ExpandCollapsePattern control pattern. 
    catch (InvalidOperationException)
    {
        return null;
    }

    return expandCollapsePattern;
}


...


///-------------------------------------------------------------------- 
/// <summary> 
/// Programmatically expand or collapse a menu item. 
/// </summary> 
/// <param name="menuItem">
/// The target menu item. 
/// </param> 
///-------------------------------------------------------------------- 
private void ExpandCollapseMenuItem(
    AutomationElement menuItem)
{
    if (menuItem == null)
    {
        throw new ArgumentNullException(
            "AutomationElement argument cannot be null.");
    }

    ExpandCollapsePattern expandCollapsePattern =
        GetExpandCollapsePattern(menuItem);

    if (expandCollapsePattern == null)
    {
        return;
    }

    if (expandCollapsePattern.Current.ExpandCollapseState ==
        ExpandCollapseState.LeafNode)
    {
        return;
    }

    try
    {
        if (expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.Expanded)
        {
            // Collapse the menu item.
            expandCollapsePattern.Collapse();
        }
        else if (expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.Collapsed ||
            expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.PartiallyExpanded)
        {
            // Expand the menu item.
            expandCollapsePattern.Expand();
        }
    }
    // Control is not enabled 
    catch (ElementNotEnabledException)
    {
        // TO DO: error handling.
    }
    // Control is unable to perform operation. 
    catch (InvalidOperationException)
    {
        // TO DO: error handling.
    }
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft