ExpandCollapsePattern.Expand Método

Definição

Exibe todos os nós filho, controles ou conteúdo do AutomationElement.

public:
 void Expand();
public void Expand ();
member this.Expand : unit -> unit
Public Sub Expand ()

Exceções

Exemplos

No exemplo a seguir, um AutomationElement item de menu que representa é passado para uma função que tenta expandir ou recolher o item de menu com base em seu item atual 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>
''' 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 Function GetExpandCollapsePattern( _
ByVal targetControl As AutomationElement) As ExpandCollapsePattern
    Dim expandCollapsePattern As ExpandCollapsePattern = Nothing

    Try
        expandCollapsePattern = DirectCast( _
        targetControl.GetCurrentPattern(expandCollapsePattern.Pattern), _
        ExpandCollapsePattern)
    Catch exc As InvalidOperationException
        ' Object doesn't support the ExpandCollapsePattern control pattern.
        Return Nothing
    End Try

    Return expandCollapsePattern

End Function 'GetExpandCollapsePattern
///--------------------------------------------------------------------
/// <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.
    }
}
'''--------------------------------------------------------------------
''' <summary>
''' Programmatically expand or collapse a menu item.
''' </summary>
''' <param name="menuItem">
''' The target menu item.
''' </param>
'''--------------------------------------------------------------------
Private Sub ExpandCollapseMenuItem(ByVal menuItem As AutomationElement)
    If menuItem Is Nothing Then
        Throw New ArgumentNullException( _
        "AutomationElement argument cannot be null.")
    End If

    Dim expandCollapsePattern As ExpandCollapsePattern = _
    GetExpandCollapsePattern(menuItem)

    If expandCollapsePattern Is Nothing Then
        Return
    End If

    If expandCollapsePattern.Current.ExpandCollapseState = _
    ExpandCollapseState.LeafNode Then
        Return
    End If

    Try
        If expandCollapsePattern.Current.ExpandCollapseState = _
        ExpandCollapseState.Expanded Then
            ' Collapse the menu item.
            expandCollapsePattern.Collapse()

        ElseIf expandCollapsePattern.Current.ExpandCollapseState = _
        ExpandCollapseState.Collapsed OrElse _
        expandCollapsePattern.Current.ExpandCollapseState = _
        ExpandCollapseState.PartiallyExpanded Then
            ' Expand the menu item.
            expandCollapsePattern.Expand()
        End If
    Catch exc As ElementNotEnabledException
        ' Control is not enabled
        ' TO DO: error handling.
    Catch exc As InvalidOperationException
        ' Control is unable to perform operation 
        ' TO DO: error handling.
    End Try

End Sub

Comentários

Esse é um método de bloqueio que retorna após a AutomationElement expansão.

Há casos em que um AutomationElement que é marcado como um nó folha pode não saber se tem filhos até que o método ou o Collapse Expand método seja chamado. Esse comportamento é possível com um controle de exibição de árvore que faz o carregamento atrasado de seus itens filho. Por exemplo, o Microsoft Windows Explorer pode exibir o ícone de expansão de um nó, embora atualmente não haja itens filho; quando o ícone é clicado, o controle sonda itens filho, não localiza nenhum e remove o ícone de expansão. Nesses casos, os clientes devem escutar um evento com alteração de propriedade na ExpandCollapseState propriedade registrando um manipulador de eventos com o AddAutomationPropertyChangedEventHandler método.

Aplica-se a

Confira também