【发布时间】:2020-04-19 03:12:40
【问题描述】:
这段代码的作用:
如果选中/取消选中父节点,还选中/取消选中所有子节点。
-
如果只选中一个子节点,还要检查父节点。
Private Sub TreeView1_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterCheck If updatingTreeView Then Return updatingTreeView = True CheckNode(e.Node, e.Node.Checked) HasCheckedChildNode = 0 updatingTreeView = False End SubPrivate Sub CheckNode(node As TreeNode, isChecked As Boolean) If node.Parent IsNot Nothing Then HasCheckedNode(node.Parent) If Not isChecked And HasCheckedChildNode > 0 Then Return node.Parent.Checked = isChecked ElseIf node.Parent Is Nothing Then For Each cn As TreeNode In node.Nodes cn.Checked = isChecked Next End If End Sub
Private Sub HasCheckedNode(node As TreeNode) For Each cn As TreeNode In node.Nodes If cn.Checked = True Then HasCheckedChildNode += 1 ElseIf cn.Checked = False Then HasCheckedChildNode -= 0 End If Next End Sub
这段代码运行良好。
问题:
当我快速点击时,一些复选框被选中,一些没有 例如。有时我检查了父节点,但所有子节点仍然未选中。有时父节点未选中,但其子节点仍处于选中状态。
请查看示例图片:
如何解决,这是我电脑的问题吗?
【问题讨论】:
标签: vb.net visual-studio-2015 treeview