Hola a todos.
Tengo el siguiente código que me permite checkear o quitar el check a todos los todos del TreeView o hacerlo solo con los nodos hijos de un solo nodo padre.
El código tambien permite quitar el check al nodo padre cuando le quito el check a uno o varios de sus hijos, o checkearlo cuando selecciono todos sus hijos.
Pero lo que quiero lograr es que tambien se checkeen o no, los nodos que son padres de ese nodo padre.
Es decir:
-Nodo Raíz
----Nodo Padre 1
-------Nodo Padre 2
----------Nodos Hijos (Padre 2)
Cuando checkee o quite uno o varios nodos hijos que tambien se checkee o no el nodo padre 2 (en este mi código lo hace), el nodo padre 1 y el nodo Raíz
Les agradezco de antemano la ayuda, les dejo el código.
Private Sub TVprueba_AfterCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TVprueba.AfterCheck
Dim iSeleccionados As Integer
If bSelecDesdeNodoHijo Then Return
TVprueba.BeginUpdate()
If e.Node.Nodes.Count <> 0 Then
MarcarDesmarcarSubNodos(e.Node.Nodes, e.Node.Checked)
End If
If e.Node.Parent IsNot Nothing Then
iSeleccionados = e.Node.Parent.Nodes.OfType(Of TreeNode).Count(Function(pre) pre.Checked)
bSelecDesdeNodoHijo = True
e.Node.Parent.Checked = (iSeleccionados = e.Node.Parent.Nodes.Count)
bSelecDesdeNodoHijo = False
End If
TVprueba.EndUpdate()
End Sub
Private Sub MarcarDesmarcarSubNodos(ByVal colCollection As TreeNodeCollection, ByVal bEstado As Boolean)
For Each sNode As TreeNode In colCollection
sNode.Checked = bEstado
If sNode.Nodes.Count > 0 Then
MarcarDesmarcarSubNodos(sNode.Nodes, bEstado)
End If
Next
End Sub