ExpandCollapsePattern.Collapse Metodo

Definizione

Nasconde tutti i nodi, i controlli o il contenuto discendente di AutomationElement.

C#
public void Collapse();

Eccezioni

Esempio

Nell'esempio seguente viene passato un elemento di Automazione interfaccia utente che rappresenta una voce di menu a una funzione che tenta di espandere o comprimere la voce di menu in base alla relativa voce di menu corrente ExpandCollapseState.

C#
///--------------------------------------------------------------------
/// <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;
}
C#
///--------------------------------------------------------------------
/// <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.
    }
}

Commenti

Si tratta di un metodo di blocco che restituisce dopo che l'elemento automazione interfaccia utente è stato compresso.

Esistono casi in cui un elemento di Automazione interfaccia utente contrassegnato come nodo foglia potrebbe non sapere se ha elementi figlio fino a quando non viene chiamato il Collapse metodo o .Expand Questo comportamento è possibile con un controllo visualizzazione albero che ritarda il caricamento degli elementi figlio. Ad esempio, Microsoft Windows Explorer potrebbe visualizzare l'icona di espansione per un nodo anche se attualmente non sono presenti elementi figlio; quando si fa clic sull'icona, il controllo esegue il polling per gli elementi figlio, trova nessuno e rimuove l'icona di espansione. In questi casi, i client devono ascoltare un evento ExpandCollapseState modificato dalla proprietà registrando un gestore eventi con il AddAutomationPropertyChangedEventHandler metodo .

Si applica a

Prodotto Versioni
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Vedi anche