以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于回答我的节点不重复循环语句的一些理解疑问?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104366)

--  作者:fengliulin
--  发布时间:2017/7/28 0:22:00
--  关于回答我的节点不重复循环语句的一些理解疑问?
Dim pn = e.node.ParentNode      \'这个是创建所选择的节点父节点,也就是同级别节点的名称赋值给pn,   但是变量怎么没类型,不太懂?
If pn Is Nothing Then pn = e.sender     \'判断父节点的名称不为空,把触发目录树的事件返回给pn
For Each nd As object In pn.nodes     \'这创建  object 对象类型不明白,   pn.nodes 是 父节点的集合,还是父节点的子节点的集合?
    If nd.text=e.NewText AndAlso nd.name <> e.node.name Then     标题   等于  新的标题,并且   名字  不等于 所选节点的名字, 这里为什么要不等                                                                                                         于,还有, 节点的标题和名字(name、text)有什么区别?
        msgbox("节点重复")
        e.cancel = True
        Return
    End If
Next

1、求解答,我的备注理解的对吗?  应该怎么理解上面的代码,帮助文件感觉这个没有datatbale   tabale   那么详细?
2、Dim tr As WinForm.TreeView     ’TreeView和TreeNode和Nodes,三个啥关系,这一块帮助我看的很疑惑

Dim td As WinForm.TreeNode
tr = Forms(
"窗口1").Controls("TreeView1")
td = tr.Nodes(
0)
td = td.Nodes(
0)
td.Text =
"筛选"          ‘td.Text和用td.name有何区别



[此贴子已经被作者于2017/7/28 0:23:48编辑过]

--  作者:有点甜
--  发布时间:2017/7/28 8:58:00
--  
Dim pn = e.node.ParentNode      \'不声明类型,就是object类型
If pn Is Nothing Then pn = e.sender     \'父节点如果是空,说明是第一级节点,它没有父节点,只能赋值为目录树本身,即trv
For Each nd As object In pn.nodes     \'循环父节点下的子节点
    If nd.text=e.NewText AndAlso nd.name <> e.node.name Then     \'如果节点的名称等于新节点名称,则重复(排除正在编辑的那个节点)
        msgbox("节点重复")
        e.cancel = True
        Return
    End If
Next
--  作者:有点甜
--  发布时间:2017/7/28 9:00:00
--  

2、treeview 是目录树;treenode 是某一个节点; nodes 是某一个节点下的所有子节点。

 

nd.text是你看到的节点的小名;nd.name是节点的真实姓名,一般和小名一样。