用了一个自认为简单的逻辑来实现它了,感谢袍兄'----这是选择了父节点,则所有子节点选中
For Each nd As WinForm.TreeNode In e.Node.AllNodes
nd.Checked = e.Node.Checked
Next
‘----当子节点的选择状态发生变化时,父节点的变化情况’
For Each nd As WinForm.TreeNode In e.Sender.AllNodes ‘遍历所有节点’
if nd.nodes.count > 0 then
For Each cnd As WinForm.TreeNode In nd.AllNodes
If cnd.Nodes.Count = 0 Then ‘这是用来判断末级节点的选中状态,非末级节点不用理会’
If cnd.Checked = False Then ‘如果末级节点有任何一个未选中,则该节点不被选中’
nd.Checked = False
Exit For
Else
nd.Checked = True ‘如果末级节点选中,则再找下一个末级节点的选择状态’
End If
End If
Next
end if
Next
[此贴子已经被作者于2015/7/16 12:48:05编辑过]