' Updates all child tree nodes recursively.PrivateSub CheckAllChildNodes(treeNode As TreeNode, nodeChecked AsBoolean)
Dim node As TreeNode
ForEach node In treeNode.Nodes
node.Checked = nodeChecked
If node.Nodes.Count > 0 Then' If the current node has child nodes, call the CheckAllChildsNodes method recursively.Me.CheckAllChildNodes(node, nodeChecked)
EndIfNext node
EndSub' 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.PrivateSub node_AfterCheck(sender AsObject, e As TreeViewEventArgs) Handles treeView1.AfterCheck
' The code only executes if the user caused the checked state to change.If e.Action <> TreeViewAction.Unknown ThenIf e.Node.Nodes.Count > 0 Then' Calls the CheckAllChildNodes method, passing in the current ' Checked value of the TreeNode whose checked state changed. Me.CheckAllChildNodes(e.Node, e.Node.Checked)
EndIfEndIfEndSub