2013-09-26 54 views
0

我有以下功能通过树形搜索:无法使用新的节点从树视图收集现有节点在C#

public static TreeNode FindAllNamesInTreeView(TreeView treeView, String name, int StartNode = -1, bool Searchilds = true) 
{ 
    TreeNode newNode = new TreeNode("SRes"); 
    newNode.Nodes.Add("Test"); 

    // check if we have a treeview 
    if (treeView == null) 
     return null; 

    // iterate through the treeview's root nodes 
    for (int i = 0; i < treeView.Nodes.Count; i++) 
    { 
     // for each root node try to find the node with the name we want 
     TreeNode foundNode = FindNameInTreeView(treeView.Nodes[i], name, StartNode, Searchilds); 

     // if we found the node, return it 
     if (foundNode != null) 
     if (TheIndexOf(foundNode) > StartNode) 
      newNode.Nodes.Add(foundNode); //Error here! 
    } 

    // no node found 
    return newNode; 
} 

上执行的newNode.Add(foundNode);我有以下例外

“类型的第一次机会异常‘System.ArgumentException’发生在System.Windows.Forms.dll中”

有谁告诉我,什么是错的或者我怎么能收集添加所有找到的节点都在这里?

回答

0

您不能将相同的节点添加到两棵树。因此,如果找到一个,并尝试将其添加到newNode,则会得到一个ArgumentException

取而代之的是使用TreeNode,我建议改为返回List<TreeNode>

+0

我想找到所有节点的集合。 将来我想遍历它们来实现FindNext函数。 – user2819065

+0

找到决定 - 我将使用列表来存储找到的元素: – user2819065