Leer en inglés

Compartir a través de


TreeView.BeforeCheck Evento

Definición

Se produce antes de activarse la casilla del nodo de árbol.

C#
public event System.Windows.Forms.TreeViewCancelEventHandler BeforeCheck;
C#
public event System.Windows.Forms.TreeViewCancelEventHandler? BeforeCheck;

Tipo de evento

Ejemplos

En el ejemplo de código siguiente se actualizan todos los nodos de árbol secundario de cuando TreeNode el usuario cambia su estado comprobado. Este código requiere que tenga un Form objeto con un TreeView que tenga TreeNode objetos en su TreeNodeCollection. TreeNodeCollection debe tener nodos de árbol con nodos secundarios.

C#
// Updates all child tree nodes recursively.
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
   foreach(TreeNode node in treeNode.Nodes)
   {
      node.Checked = nodeChecked;
      if(node.Nodes.Count > 0)
      {
         // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
         this.CheckAllChildNodes(node, nodeChecked);
      }
   }
}

// NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
// After a tree node's Checked property is changed, all its child nodes are updated to the same value.
private void node_AfterCheck(object sender, TreeViewEventArgs e)
{
   // The code only executes if the user caused the checked state to change.
   if(e.Action != TreeViewAction.Unknown)
   {
      if(e.Node.Nodes.Count > 0)
      {
         /* Calls the CheckAllChildNodes method, passing in the current 
         Checked value of the TreeNode whose checked state changed. */
         this.CheckAllChildNodes(e.Node, e.Node.Checked);
      }
   }
}

Comentarios

Nota

Establecer la TreeNode.Checked propiedad desde dentro del BeforeCheck evento o AfterCheck hace que el evento se genere varias veces y puede dar lugar a un comportamiento inesperado. Por ejemplo, puede establecer la Checked propiedad en el controlador de eventos cuando se actualizan recursivamente los nodos secundarios, de modo que el usuario no tenga que expandir y comprobar cada uno individualmente. Para evitar que el evento se genere varias veces, agregue lógica al controlador de eventos que solo ejecute el código recursivo si la Action propiedad de TreeViewEventArgs no está establecida en TreeViewAction.Unknown.

Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.

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