我有一个动态生成的树视图。我的问题是它添加了相同的节点-它从另一个应用程序接收列表,尽管其中重复了相同的项目,但是我不想在我的树形视图中包括重复的项目。我试图避免在第一种情况下添加节点;但失败了。我的检查是否存在的代码如下(尝试了一些):
if(treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2].Nodes.Find(childnode.Name,true).Length>0)
{
treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2].Nodes.Add(childnode);
}
和
if(treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2].Nodes.Contains(childnode.Name))
{
treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2].Nodes.Add(childnode);
}
答案 0 :(得分:0)
我认为问题可能是在创建子节点时,即使它们的所有属性都相同,它们在技术上也是不同的对象。因此,在这种情况下,node.Contains(childnode)不会返回true。
您可以改为添加一个函数来遍历节点上的所有名称属性以查找匹配项:
public bool CheckNameExists(TreeNode parent, string text)
{
foreach (TreeNode item in parent.Nodes)
{
if (item.Name == text) return true;
}
return false;
}
所以我将以您的第二个示例为例:
if(CheckNameExists(treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2], childnode.Name) == false)
{
treeViewLeft.Nodes[0].Nodes[index1].Nodes[index2].Nodes.Add(childnode);
}