这个标题属于找抽型...这问题看不出来原因的都应该去找本入门书面壁一周...new TreeNode(this.textBox1.Text)//每次创建的TreeNode对象都是不可能相同的,即使title相同...去看看书什么叫引用类型,==号怎样比较引用类型...

解决方案 »

  1.   

    因为你每次都判断是不是包含了新的节点(你用了new),即使有了这样一个节点,也是"老"的了。
      

  2.   

    Contains(new TreeNode(this.textBox1.Text))
    愚人节也不能这样搞啊
      

  3.   

    你每次使用Contains的时候,里面的元素都是new出来的,节点里怎么可能有呢????
      

  4.   

    new TreeNode(this.textBox1.Text)引用类型。和现在TREENODE并不是指向同一个TREENODE
      

  5.   

    那是不是Contains方法在判断是否存在重复节点的时候就不能用了?
    如果能用,正确代码怎么写????
      

  6.   


    bool exist = false;
    foreach(TreeNode node in this.treeView1.SelectedNode.Nodes)
    {
      if(node.Text==this.textBox1.Text)
      {
        exist=true;
        break;
      }
    }
    if (!exist) 

      MessageBox.Show("子节点可以添加"); 
      return false; 

    else 

      MessageBox.Show("子节点有重复,不能添加!"); 
      return true; 

      

  7.   

    this.treeView1.SelectedNode.Nodes.Contains(new TreeNode(this.textBox1.Text)) ==false;
    之是一个“永真式”,因为你new出来的TreeNode实例不可能存在你选中结点的子结点中,Nodes.Contains()判断的是实例(引用)是否相同,你新new出来的实例肯定不存在,所以永远为false,而false==false永远是true;
      

  8.   

    因为你只是判断能不能添加,并没有真正添加节点。new TreeNode(this.textBox1.Text)) 只是生成了一个节点而已。添加节点需要treenode.nodes.add啊。
    没有添加,自然不包含此节点。所以contains一直返回false