我想知道从顶部计数的选定节点索引包括父节点

Posted

技术标签:

【中文标题】我想知道从顶部计数的选定节点索引包括父节点【英文标题】:I want to know the selected node index counted from top included the parent nodes 【发布时间】:2019-08-01 13:40:24 【问题描述】:

我已经使用了 TAG 和 TEXT,有没有其他方法可以跟踪所选节点或其他属性来为节点分配值?

【问题讨论】:

选择的节点是SelectedNode。它有NameFullPathTag。你有什么要求? @RezaAghaei 我想知道它的属性,而不是名称、文本。其实我一开始就想知道它的位置。 你可以找到它,但如果你让我们知道这些信息的用途,我们可以建议一个更好的选择。例如this one. 如果用户选中/取消选中复选框,则需要选择节点索引来更新数据库 如果要向 TreeNode 添加其他属性,请创建一个继承 treeNode 的类,然后添加其他属性。试图跟踪索引很容易出错:public class MyTreeNode : TreeNode 【参考方案1】:

您可以创建一个方法来展平树结构,然后在列表中找到节点索引。

例如,创建如下扩展方法:

using System.Collections.Generic;
using System.Windows.Forms;
public static class TreeNodeCollectionExtensions

    public static IEnumerable<TreeNode> AsEnumerable(this TreeNodeCollection nodes)
    
        foreach (TreeNode c1 in nodes)
        
            yield return c1;
            foreach (TreeNode c2 in AsEnumerable(c1.Nodes))
                yield return c2;
        
    

并以这种方式使用它:

//using System.Linq;
var index = treeView1.Nodes.AsEnumerable().ToList().IndexOf(treeView1.SelectedNode);

注意

节点的索引不是找到节点的可靠信息,我只是为了学习目的而分享了答案。如果要将节点映射到数据库记录,只需将数据库记录的关键字段存储在NameTag 属性中,并使用它来查找与该节点相关的记录。

【讨论】:

如果您对答案有任何疑问,请告诉我。

以上是关于我想知道从顶部计数的选定节点索引包括父节点的主要内容,如果未能解决你的问题,请参考以下文章

在不知道父节点的情况下搜索 XML 节点值

margin-塌陷

javascript 得到某一节点在父节点中的索引

jsTree:如何将选定节点的 ID 获取到 jsTree 中的根节点?

js逆向树操作 - 收集所有节点的父节点 (包括顶级根节点) - 递归

js逆向树操作 - 收集所有节点的父节点 (包括顶级根节点) - 递归