TreeView.BeforeCheck Evento

Definizione

Si verifica prima che venga selezionata la casella di controllo del nodo dell'albero.

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

Tipo evento

Esempio

Nell'esempio di codice seguente vengono aggiornati tutti i nodi dell'albero figlio di un TreeNode oggetto quando l'utente modifica lo stato selezionato. Per questo codice è necessario disporre di un oggetto con un FormTreeView oggetto che contiene TreeNode oggetti nel relativo TreeNodeCollectionoggetto . Deve avere nodi dell'albero TreeNodeCollection con nodi figlio.

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

Commenti

Nota

L'impostazione della TreeNode.Checked proprietà dall'interno dell'evento BeforeCheck o AfterCheck determina la generazione dell'evento più volte e può comportare un comportamento imprevisto. Ad esempio, è possibile impostare la Checked proprietà nel gestore eventi quando si aggiornano in modo ricorsivo i nodi figlio, in modo che l'utente non deve espandere e controllare ognuno singolarmente. Per evitare che l'evento venga generato più volte, aggiungere la logica al gestore eventi che esegue solo il codice ricorsivo se la Action proprietà di TreeViewEventArgs non è impostata su TreeViewAction.Unknown.

Per altre informazioni su come gestire gli eventi, vedere la gestione e generazione di eventi.

Si applica a

Prodotto Versioni
.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

Vedi anche