在树视图中查找节点并将跟踪保存在列表中<>在C#中

时间:2014-07-17 22:15:40

标签: c# treeview nodes treenode

我用这个打破了我的头脑,我将解释我有一个树视图,我需要找到一个节点,我有节点的id,但我想在列表中保存节点的跟踪

e.g。如果我想找到节点1.2.1.1

 node1
    node1.1
      node 1.1.1
      node 1.1.2
      node 1.1.3
    node 1.2
      node 1.2.1
        node 1.2.1.1
    node 1.3 

我的列表应该有{node1,node1.2,node1.2.1,node 1.2.1.1}

我做了一些代码,但它不起作用请帮忙!我将非常感激

这是我的代码

        foreach (SFFolder item in folderBrowserTreeView.Items)
            {

                JumpToNode(item, recoveryFolderID);
            }


void JumpToNode(SFFolder tvi, string folderID)
   {
       if (tvi.Id == folderID)
       {
           folderBrowserTreeView.Focus();
           tvi.IsExpanded = true;
           tvi.IsSelected = true;
           return;
       }
       else
           tvi.IsExpanded = true;

       if (tvi.HasChildren)
       {
           tvi.Childrens = _apiShareMethods.GetChildrens(_token, tvi.Id);//this add new                children from the rest api
           foreach (var item in tvi.Childrens)
           {
               SFFolder temp = item as SFFolder;
               JumpToNode(temp, folderID, localPath);
           }
       }

此代码在找到我想要找到的节点之前展开所有节点,而我想要的只是扩展所需的路径  节点

1 个答案:

答案 0 :(得分:0)

我认为如果您在问题中声明所有意图,这将对您有所帮助:

var node = treeView1.Nodes.Find("Node1.2.1.1", true).First();
string[] path = node.FullPath.Split(new string[] { "\\" },StringSplitOptions.RemoveEmptyEntries);
var nodes = from s in path
            let n = treeView1.Nodes.Find(s, true).First()
            select n