我想知道从父节点开始算起的所选节点索引

时间:2019-03-11 09:14:58

标签: c# winforms treeview

我使用了TAG和TEXT,是否还有其他方法可以跟踪所选节点或其他属性以将值分配给节点?

TreeView-Selected Node

1 个答案:

答案 0 :(得分:0)

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

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

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属性中,并使用它来查找与节点相关的记录。