TreeView.BeforeCheck Événement

Définition

Se produit avant que la case du nœud d'arbre soit cochée.

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

Type d'événement

Exemples

L’exemple de code suivant met à jour tous les nœuds d’arborescence enfant d’un TreeNode lorsque l’utilisateur change son état vérifié. Ce code nécessite que vous ayez un Form avec un qui a TreeNode des TreeView objets dans son TreeNodeCollection. Le TreeNodeCollection doit avoir des nœuds d’arborescence avec des nœuds enfants.

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

Remarques

Notes

Si vous définissez la TreeNode.Checked propriété à partir de l’événement BeforeCheck ou AfterCheck , l’événement est déclenché plusieurs fois et peut entraîner un comportement inattendu. Par exemple, vous pouvez définir la Checked propriété dans le gestionnaire d’événements lorsque vous mettez à jour de manière récursive les nœuds enfants, afin que l’utilisateur n’ait pas à développer et à case activée chacun d’eux individuellement. Pour éviter que l’événement ne soit déclenché plusieurs fois, ajoutez une logique à votre gestionnaire d’événements qui exécute uniquement votre code récursif si la Action propriété du TreeViewEventArgs n’est pas définie sur TreeViewAction.Unknown.

Pour plus d’informations sur la façon de gérer les événements, consultez gestion et déclenchement d’événements.

S’applique à

Produit Versions
.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

Voir aussi