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.

 


本页地址:http://www.foxtable.com/webhelp/topics/1947.htm