我正在寻找一种有效的小算法来遍历.NET treeView节点列表的text属性。当用户完成添加新节点并最终点击保存时,我需要检查text属性(包含用户输入的友好名称)是否仍然是唯一的。
如果treeView键恰好是这个数据,那么生活会很容易,但它不是(它是一个GUID,但是让用户输入一个友好的名字)。
除了引入带有foreach循环的新方法以检查每个节点的text属性中的重复名称之外,还有什么更好的想法? BTW - 我已经在当前代码路径中提供了每个单独的节点...我正在遍历列表一次以寻找其他(更简单)条件来提供反馈。 foreach(treeView.Nodes [0] .Nodes中的TreeNode节点) {...}
谢谢, 鲍勃
答案 0 :(得分:2)
如果用户从头开始构建树,那么如果将每个名称插入Hashtable,则可以通过检查Hashtable中是否存在名称来快速检查重复项。你必须处理更新,但这很容易。
答案 1 :(得分:0)
我必须这样做一次。我记得,我继承了TreeView及其节点,然后添加了我自己的方法来捕获text属性的任何更改,这些更改总是会将新值添加到List中,如果该文本值已经存在,这当然会抛出错误。 Alos,在添加新值之前,必须首先从List中删除任何old / prev node.text值。
这对我来说很好。
答案 2 :(得分:0)
我不知道你的优雅与可维护性比率是多少,但对于这种直截了当的东西,我会考虑像Arnshea所提到的哈希表,或者甚至像SortedList那样简单的东西。