Foxtable(狐表)用户栏目专家坐堂 → [求助]树节点选择联动


  共有12919人关注过本帖树形打印复制链接

主题:[求助]树节点选择联动

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]树节点选择联动  发帖心情 Post By:2012/11/2 16:55:00 [显示全部帖子]

有一个树,要做复选。
1.如果选中节点,则它所有的子节点都被选择,反之,取消选中节点,所有的子节点取消选择,这个在帮助里有。
For Each nd As WinForm.TreeNode In e.Node.AllNodes
nd.Checked = e.Node.Checked
Next

2.如果这个节点所有的子节点都取消选中状态,则这个节点的状态改为未选中,代码又该如何?

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/2 17:07:00 [显示全部帖子]

听大师的,上传附件。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:树节点与子节点同步变化.table


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/2 20:50:00 [显示全部帖子]

关于内部函数研究了好久,看不太明白。
帮助里的文档对这个内部函数解释也很少,各位狐神能对这个东东的计算过程详细解释一下么?
[此贴子已经被作者于2012-11-2 20:49:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/2 21:35:00 [显示全部帖子]

真正要实现的是几个:
1.选择了父节点,则所有子节点都被选择;反之,取消父节点,则所有子节点都被取消
2.选择了任一子节点,则该子节点的父节点,以及父节点的父节点,一直到顶级节点都被选择
3.如果某一节点的所有子节点都被取消,则此节点也取消。

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/2 21:48:00 [显示全部帖子]

哦,还有一点,如果所有子节点都被选择,则父节点也被选择。
啊哦,第二种情况包括它了。
[此贴子已经被作者于2012-11-2 21:52:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/2 22:03:00 [显示全部帖子]

Dim a_node As WinForm.TreeNode = Args(0)

If a_node.Level > 0 Then
    Dim flag As Boolean = True
    For Each node As WinForm.TreeNode In a_node.ParentNode.Nodes
        If node.Checked Then
            flag = False
            Exit For
        End If
    Next
    
    If flag = True Then
        a_node.ParentNode.Checked = False
        Functions.Execute("CheckNode", a_node.ParentNode)
    Else
        a_node.ParentNode.Checked = True
        Functions.Execute("CheckNode", a_node.ParentNode)
    End If
End If

然后把节点复选事件改为
    Functions.Execute("CheckNode", e.Node) 

这样测试了一下,好象也行………………
[此贴子已经被作者于2012-11-2 22:04:31编辑过]

 回到顶部