【发布时间】:2011-01-20 13:09:47
【问题描述】:
首先我们有万能的代码!
List nodes = new List();
TreeNode Temp = new TreeNode();
TreeNodeCollection nodeList = treeViewTab4DirectoryTree.Nodes;
while (nodeList.Count != 0)
{
Temp = nodeList[0];
while (Temp.FirstNode != null)
{
Temp = Temp.FirstNode;
}
if (!nodes.Contains(Temp.FullPath))
{
nodes.Add(Temp.Text);
}
nodeList.Remove(Temp);
}
现在的问题是:我编写了上面的代码,目的是创建一个包含树中所有节点的文本的列表。这很完美。我遇到的问题是,当我从变量中删除节点时,它们也会从实际列表中删除。问题是如何制作节点列表的副本,这样我就可以在不弄乱 ACTUAL 列表的情况下使用它们。如何在不引用它的情况下复制它?任何帮助将不胜感激!
【问题讨论】:
-
仅供参考:在第 2 行,您无需创建新的
TreeNode—— 您只需分配变量null即可。 -
@Jon 谢谢。我已经对我的代码进行了更改
-
这是标准的 WinForms TreeView 吗?当然,您一定打算使用: List
nodes = new List (); ? ...也无需将 'Temp 初始化为任何内容:您可以使用:TreeNode Temp; -
如果您在标准 WinForms Treeview 上进行迭代,您可能会发现此处使用 Linq 的讨论和示例代码很有价值:stackoverflow.com/questions/1815497/…