以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于TreeView选取值的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176521)

--  作者:hongye
--  发布时间:2022/4/16 1:06:00
--  关于TreeView选取值的问题


图片点击可在新窗口打开查看此主题相关图片如下: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间: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

这个代码也不能用


--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/4/16 11:46:00
--  
3、要做递归,先遍历所有的第一层节点,判断有子节点的,递归遍历子节点的节点
 
这个意思不懂,有没有类似的实例?

--  作者:有点蓝
--  发布时间:2022/4/16 11:48:00
--  
类似:http://www.foxtable.com/webhelp/topics/2416.htm
--  作者:hongye
--  发布时间:2022/4/16 19:51:00
--  

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

 

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


--  作者:有点蓝
--  发布时间:2022/4/17 20:08:00
--  
哪个控件哪个窗口的功能,怎么测试?
--  作者:hongye
--  发布时间:2022/4/17 21:38:00
--  

窗口1的DropBox1打开


--  作者:有点蓝
--  发布时间:2022/4/17 21:55:00
--  
然后呢?举例说明一下,要做什么,需要返回什么结果?