Unfortunately there is no easy way to do that other than to manually enumerate the children. The easiest approach is to listen for the AfterCheck event on the treeview. When it fires then enumerate the child nodes using Nodes property and check/uncheck each child. Since you've hooked the event that would recursively call the handler for each child.
Public Class Form1
Private Sub OnAfterCheck(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterCheck
For Each child As TreeNode In e.Node.Nodes
child.Checked = e.Node.Checked
Next
End Sub
End Class
If you wanted to make this reusable then you could wrap this logic into a derived TreeView
class.
Note that this might not perform well if the treeview is large and it doesn't handle virtual items.