treeview 钩选问题
- 单位档案
- 单位档案查看
- 单位档案维护
+ 短信
+ 分析助手
+、-号是用来展开和收缩的,但每个node旁边还有checkbox可选,问题是:怎么样做到钩选父节点的时候,子节点全部钩上,父节点去钩的时候子节点也全部去钩,子节点全部钩上的时候,父节点也钩上,子节点部份钩上的时候父节点半钩(有些软件好像是用实心反灰表示的),子节点全部去钩的时候,父节点也去钩。
不知道有没有属性可以直接设置,还是要用代码遍历treview,请各位高手指点。
[解决办法]
具体怎么操作我也没有做过,不过给你提供个思路:相对于子节点都有父节点,就是 ".parent ",你查一下关于操作父节点的资料就能解决你的问题了
[解决办法]
父节点半钩
--------------------
默认的情况下,TreeView是实现不了的,要么勾上,要么不勾上,除非自绘制TreeView.
[解决办法]
不能设置,要用代码去判断。
遍历判断,父或者子。
[解决办法]
半钩就别指望了
CSDN相关的问题很多,搜一下就知道!
[解决办法]
半钩的确不能实现,除非你自己写,如用图片,很麻烦。如果要实现选中或取消父级,所有子级选中或取消,只要任一子级选中,父级也选中,只要所有子级全部取消父级也取消,是可以做的。但不能在AfterCheck这个事件中实现,因为在这个事件是矛盾的。
[解决办法]
可以在AfterCheck事件中处理,
Private Sub TreeView1_AfterCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterCheck
If e.Action = TreeViewAction.ByKeyboard Or e.Action = TreeViewAction.ByMouse Then
Dim ee As TreeViewEventArgs
If Not e.Node.Parent Is Nothing Then
If e.Node.Checked = True Then
e.Node.Parent.Checked = e.Node.Checked
Else
Dim IsAllUnSelect As Boolean = True
For Each nod As TreeNode In e.Node.Parent.Nodes
If nod.Checked <> e.Node.Checked Then
IsAllUnSelect = False
Exit For
End If
Next
If IsAllUnSelect = True Then
e.Node.Parent.Checked = e.Node.Checked
End If
End If
End If
CheckNode(e.Node.Nodes, e.Node.Checked)
End If
End Sub
Private Sub CheckNode(ByVal Nodes As TreeNodeCollection, ByVal Checked As Boolean)
For Each nod As TreeNode In Nodes
nod.Checked = Checked
If nod.GetNodeCount(True) > 0 Then
CheckNode(nod.Nodes, Checked)
End If
Next
End Sub