Foxtable(狐表)用户栏目专家坐堂 → 关于TreeView选取值的问题


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

主题:关于TreeView选取值的问题

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
关于TreeView选取值的问题  发帖心情 Post By:2022/4/16 1:06:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:01.jpg
图片点击可在新窗口打开查看

 

学习了TreeView的选取代码

 

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

 

但是发现问题

1,先取字节点后,不能同步上一级节点,请问怎么改代码?

2,选取上一级节点后,在DropDownBox的框里除了有子节点的值还有上一级节点的值,我只需要子节点的数据,请问如何取值?

3,取值我的想法是按我选取的顺序在DropDownBox的框里排序,有什么办法?

[此贴子已经被作者于2022/4/16 1:10:13编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107672 积分:547681 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/16 9:13:00 [只看该作者]

1、
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
改为
    Dim pd As WinForm.TreeNode = e.node.ParentNode '获取父节点
    Do While pd IsNot Nothing
        pd.Checked = e.node.Checked
        pd  = pd.ParentNode '继续获取上一层级的父节点
    Loop

2、如果是指获取最底层的节点
方法2、判断是否有子节点:http://www.foxtable.com/webhelp/topics/0887.htm
if e.node.nodex.count = 0 then
msgbox(“最底层节点”)
endif

3、要做递归,先遍历所有的第一层节点,判断有子节点的,递归遍历子节点的节点

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2022/4/16 11:00:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:面料系统.foxdb

 

    Dim pd As WinForm.TreeNode = e.node.ParentNode '获取父节点
    Do While pd IsNot Nothing
        pd.Checked = e.node.Checked
        pd  = pd.ParentNode '继续获取上一层级的父节点
    Loop

上面这个代码好像不行,如果同一层级上有两个子节点,应该是全部选取才能让上级节点勾上

if e.node.nodex.count = 0 then
msgbox(“最底层节点”)
endif

这个代码也不能用


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107672 积分:547681 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/16 11:24:00 [只看该作者]

1、遍历判断上级节点的所有子节点,如果全部勾选就勾选

   Do While pd IsNot Nothing
dim b as boolean
for each n as winform.treenode in pd.nodes
if n.Checked=false then
b = true
exit for
end if
next
        pd.Checked =  not b
        pd  = pd.ParentNode '继续获取上一层级的父节点
    Loop

2、
if e.node.nodes.count = 0 then

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2022/4/16 11:46:00 [只看该作者]

3、要做递归,先遍历所有的第一层节点,判断有子节点的,递归遍历子节点的节点
 
这个意思不懂,有没有类似的实例?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107672 积分:547681 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/16 11:48:00 [只看该作者]


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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2022/4/16 19:51:00 [只看该作者]

学习了一天没搞懂,太深奥了,求帮助

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:面料系统.foxdb


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107672 积分:547681 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/17 20:08:00 [只看该作者]

哪个控件哪个窗口的功能,怎么测试?

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2022/4/17 21:38:00 [只看该作者]

窗口1的DropBox1打开


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107672 积分:547681 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/17 21:55:00 [只看该作者]

然后呢?举例说明一下,要做什么,需要返回什么结果?

 回到顶部
总数 14 1 2 下一页