AfterCheckNode
改变节点复选框状态后执行。
e参数属性
Form: 触发事件的窗口
Sender: 触发事件的目录树
Node: 触发事件的节点
示例
假定有下图所示的目录树,希望:
1、勾选某节点后,能同步勾选所有子节点,反之亦然。
2、清除某节点勾选状态后,其父节点的勾选状态也能同步被清除。
为此,可以设置AfterCheckNode事件代码为:
For
Each nd
As WinForm.TreeNode
In e.node.Nodes
'同步子节点选中状态
nd.Checked
= e.node.Checked
Next
If
e.node.Checked
= False Then
'如果本次操作为清除节点选中状态
Dim pd
As WinForm.TreeNode
= e.node.ParentNode
'获取父节点
If pd
IsNot Nothing
Then
pd.Checked
= False '清除父节点选中状态
End If
End
If
上面的代码只能处理一级子节点,表现在:
1、如果我们勾选数码产品,那么电脑、电脑配件、相机会同步勾选,但是笔记本、服务器等二级子节点并不会同步勾选。
2、如果我们清除台式机的勾选状态,那么只能同步清除电脑的勾选状态,再上一级的数码产品的勾选状态则不会发生变化。
要实现跨层同步的目的,可以将代码改为:
For
Each nd
As WinForm.TreeNode
In e.node.AllNodes
'同步子节点选中状态
If nd.FullPath.StartsWith(e.node.FullPath)
Then
nd.Checked
= e.node.Checked
End If
Next
If
e.node.Checked
= False Then
'如果本次操作为清除节点选中状态
Dim pd
As WinForm.TreeNode
= e.node.ParentNode
'获取父节点
Do While
pd IsNot
Nothing
pd.Checked
= False '清除父节点选中状态
pd = pd.ParentNode
'继续获取上一层级的父节点
Loop
End
If
注意这里使用的是AllNodes.