Auf Englisch lesen

Freigeben über


TreeView.BeforeCheck Ereignis

Definition

Tritt ein, bevor das Kontrollkästchen des Strukturknotens aktiviert wird.

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

Ereignistyp

Beispiele

Im folgenden Codebeispiel werden alle untergeordneten Strukturknoten eines TreeNode aktualisiert, wenn der Benutzer den aktivierten Zustand ändert. Dieser Code erfordert, dass Sie über ein Form mit einem TreeView verfügen, das TreeNode -Objekte in seinem TreeNodeCollectionenthält. Die TreeNodeCollection sollte Strukturknoten mit untergeordneten Knoten aufweisen.

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

Hinweise

Hinweis

Das Festlegen der TreeNode.Checked -Eigenschaft innerhalb des BeforeCheck - oder AfterCheck -Ereignisses führt dazu, dass das Ereignis mehrmals ausgelöst wird und zu unerwartetem Verhalten führen kann. Beispielsweise können Sie die Checked -Eigenschaft im Ereignishandler festlegen, wenn Sie die untergeordneten Knoten rekursiv aktualisieren, sodass der Benutzer nicht einzeln erweitern und überprüfen muss. Um zu verhindern, dass das Ereignis mehrmals ausgelöst wird, fügen Sie Ihrem Ereignishandler Logik hinzu, die Den rekursiven Code nur ausführt, wenn die Action -Eigenschaft des TreeViewEventArgs nicht auf TreeViewAction.Unknownfestgelegt ist.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Gilt für:

Produkt Versionen
.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

Weitere Informationen