Exportar (0) Imprimir
Expandir todo

TreeView.BeforeCheck (Evento)

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

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event TreeViewCancelEventHandler BeforeCheck
/** @event */
public void add_BeforeCheck (TreeViewCancelEventHandler value)

/** @event */
public void remove_BeforeCheck (TreeViewCancelEventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

NotaNota:

Si la propiedad TreeNode.Checked se establece desde el evento BeforeCheck o AfterCheck, el evento se provoca varias veces y puede producirse un comportamiento imprevisto. Por ejemplo, la propiedad Checked puede establecerse en el controlador de eventos cuando los nodos secundarios se están actualizando de forma recursiva, de forma que el usuario no tenga que expandir y comprobar cada uno de los nodos uno por uno. Para evitar que el evento se provoque varias veces, hay que agregar lógica al controlador de eventos para que sólo ejecute el código recursivo si la propiedad Action de TreeViewEventArgs no está establecida en TreeViewAction.Unknown.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el siguiente ejemplo de código se actualizan todos los nodos de árbol secundarios de un TreeNode cuando el usuario cambia su estado de activación. En este código se requiere que haya un Form con un TreeView que contenga objetos TreeNode en su TreeNodeCollection. TreeNodeCollection debe contener nodos de árbol que tengan nodos secundarios.

// 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);
      }
   }
}

// Updates all child tree nodes recursively.
private void CheckAllChildNodes(TreeNode treeNode, boolean nodeChecked)
{
    for (int iCtr = 0; iCtr < treeNode.get_Nodes().get_Count(); iCtr++) {
        TreeNode node = treeNode.get_Nodes().get_Item(iCtr);
        node.set_Checked(nodeChecked);
        if (node.get_Nodes().get_Count() > 0) {
            // If the current node has child nodes, call the
            // CheckAllChildsNodes method recursively.
            this.CheckAllChildNodes(node, nodeChecked);
        }
    }
} //CheckAllChildNodes

// 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.get_Action().Equals(TreeViewAction.Unknown))) {
        if (e.get_Node().get_Nodes().get_Count() > 0) {
            /* Calls the CheckAllChildNodes method, passing in the current 
               Checked value of the TreeNode whose checked state changed. */
            this.CheckAllChildNodes(e.get_Node(), e.get_Node().get_Checked());
        }
    }
} //Node_AfterCheck

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar:
© 2014 Microsoft