不能使用新节点从 C# 中的树视图收集现有节点

本文关键字:节点 视图 新节点 不能 | 更新日期: 2023-09-27 18:32:49

我有以下功能用于搜索树视图

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.Windows.Forms中发生了类型为'System.ArgumentException'的第一次机会异常.dll"

谁能告诉我出了什么问题,或者我如何将收集所有找到的节点添加到一个节点中?

不能使用新节点从 C# 中的树视图收集现有节点

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

与其使用TreeNode,我建议返回一个List<TreeNode>