Leer en inglés

Compartir a través de


TreeView.CollapseAll Método

Definición

Contrae todos los nodos de árbol.

C#
public void CollapseAll();

Ejemplos

En el ejemplo de código siguiente se muestra cómo cambiar el estado de contracción de para TreeView que todos los nodos comprobados estén visibles. En primer lugar, se contraen todos los nodos y se agrega un controlador para el BeforeExpand evento. A continuación, se expanden todos los nodos. El BeforeExpand controlador de eventos determina si un nodo determinado tiene nodos secundarios que se comprueban. Si un nodo no tiene elementos secundarios comprobados, la expansión se cancela para ese nodo. Para permitir la expansión del nodo estándar cuando se hace clic en el signo más junto a un nodo, se quita el BeforeExpand controlador de eventos.

Este comportamiento también se puede implementar controlando el BeforeCollapse evento, como se muestra en el ejemplo de ese tema.

Para obtener el ejemplo completo, consulte el tema de CheckBoxes referencia.

C#
private void showCheckedNodesButton_Click(object sender, EventArgs e)
{
    // Disable redrawing of treeView1 to prevent flickering 
    // while changes are made.
    treeView1.BeginUpdate();

    // Collapse all nodes of treeView1.
    treeView1.CollapseAll();

    // Add the checkForCheckedChildren event handler to the BeforeExpand event.
    treeView1.BeforeExpand += checkForCheckedChildren;

    // Expand all nodes of treeView1. Nodes without checked children are 
    // prevented from expanding by the checkForCheckedChildren event handler.
    treeView1.ExpandAll();

    // Remove the checkForCheckedChildren event handler from the BeforeExpand 
    // event so manual node expansion will work correctly.
    treeView1.BeforeExpand -= checkForCheckedChildren;

    // Enable redrawing of treeView1.
    treeView1.EndUpdate();
}

// Prevent expansion of a node that does not have any checked child nodes.
private void CheckForCheckedChildrenHandler(object sender, 
    TreeViewCancelEventArgs e)
{
    if (!HasCheckedChildNodes(e.Node)) e.Cancel = true;
}

// Returns a value indicating whether the specified 
// TreeNode has checked child nodes.
private bool HasCheckedChildNodes(TreeNode node)
{
    if (node.Nodes.Count == 0) return false;
    foreach (TreeNode childNode in node.Nodes)
    {
        if (childNode.Checked) return true;
        // Recursively check the children of the current child node.
        if (HasCheckedChildNodes(childNode)) return true;
    }
    return false;
}

Comentarios

El CollapseAll método contrae todos los TreeNode objetos, que incluye todos los nodos de árbol secundarios, que se encuentran en el TreeView control .

Nota

El estado de un TreeNode objeto persiste. Por ejemplo, supongamos que llama al Expand método para un nodo de árbol raíz. Si los nodos de árbol secundario no estaban contraídos anteriormente, aparecerán en su estado expandido previamente. Llamar al CollapseAll método garantiza que todos los nodos de árbol aparezcan en estado contraído.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 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

Consulte también