2015-10-15 75 views
0

我有一个可观察的路径集合。 我想要做的事情是更新我的treeView更改集合。 你能否帮我创建一个方法,该方法将Treeview,FilePath和PathSeparator作为参数,并将新节点添加到我的treeView中。这是我现在有:使用新文件路径更新TreeView

private void MyCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
    TreeViewAddNode(TreeView,Path,PathSeparator) 
} 

TreeViewAddNode(TreeView treeView, string path, char pathSeparator) 
{ 
    foreach (string subPath in path.Split(pathSeparator)) 
    { 
     //Hear should be logic to add new nodes if they don't exist } 
    } 
} 

正如我想的结果有类似的东西:
C:
--Temp
---- FILE1.TXT
----文件2。 TXT
----新Foledr
------- File3.txt
--AnotherFolder
---- File4.txt
d:
- 新建文件夹
---- FILE.TXT

+0

什么是香草'treeView.Nodes.Add(path);'? –

+0

这将是一个单独的节点,我需要类似的东西: C: ---温度 ------ FILE.TXT --- Program Files文件 ------ SmthElse – Ivan

+0

所以应该是类似的东西: 的foreach(字符串子路径在path.Split(pathSeparator)){ // 听见应该是逻辑添加新的节点,如果不存在 他们} – Ivan

回答

1

编辑

现在有了更好的理解上被问:

private void TreeViewAddNode(TreeView treeView, string path, char pathSeparator) 
{ 
    string[] split = path.Split(pathSeparator); 

    for(int i = 0; i < split.Length; i++) 
    { 
     if(i == 0) 
     { 
      checkTreeView(treeView, split[0]); 
     } 
     else 
     { 
      TreeNode node = treeView1.Nodes.Find(split[i - 1], true)[0]; 
      checkNodes(node, split[i]);           
     } 
    }     
} 

private void checkTreeView(TreeView treeView, string path) 
{ 
    bool exists = false; 

    foreach(TreeNode node in treeView.Nodes) 
    { 
     if(node.Text == path) 
     { 
      exists = true; 
     } 
    } 

    if(!exists) 
    { 
     TreeNode node = treeView.Nodes.Add(path); 
     node.Name = path; 
    } 
} 

private void checkNodes(TreeNode parent, string path) 
{ 
    bool exists = false; 

    foreach(TreeNode node in parent.Nodes) 
    { 
     if(node.Text == path) 
     { 
      exists = true; 
     }     
    } 

    if(!exists) 
    { 
     TreeNode node = parent.Nodes.Add(path); 
     node.Name = path; 
    } 
} 

checkTreeView检查的路径是在TreeView目前媒体链接节点。如果它没有添加到树视图。 checkNodes也一样。

+0

不是真的,你的版本不显示文件夹的层次结构,它们都在一个层次上 – Ivan

+0

然后,您可能希望在您的问题中指定您希望底层文件夹作为子节点。 – Huntt

+0

对不起,我编辑了我的问题 – Ivan