请问 怎么才能删除TreeView中所有节点的 最后一层 子节点  谢谢

解决方案 »

  1.   

    可以递归的方法,删除没有子节点的节点.
    最好在初始化的时候,就分清哪一个节点是末级节点,比如,在Key 或 Tag 上作标记。
    这样删除有标记的节点就行了,自己也清楚,不用逻辑推断。
      

  2.   

    主要方法:if (treeView1.Nodes[0].Nodes[0].Nodes.Count == 0)
    {
        treeView1.Nodes[0].Nodes[0].Remove();
    }
      

  3.   

    private void  SearchDelTreeNode(TreeNodeCollection   myCollect)
    {
    foreach(TreeNode   tn   in   myCollect)     
                {
                    if (tn.Nodes.Count ==0)
                   {
                        myCollect.Remove(tn);
                    }
                    if (tn.Nodes.Count>=1)
                    {
                        SearchDelTreeNode(tn.Nodes);
                    }
    }
    }
    我是这么递归的 删不干净
      

  4.   

    treeView1.Nodes[0].Nodes[0].Remove();
      

  5.   

     private void button1_Click(object sender, EventArgs e)
            {          
                for (int i = 0; i < treeView1.Nodes.Count; i++)
                {
                    i = NodeRemove(treeView1.Nodes[i], i);
                }
            }        private int NodeRemove(TreeNode node, int i)
            {
                if (node.LastNode != null)
                {
                    foreach (TreeNode znode in node.Nodes)
                    {
                        NodeRemove(znode, i);
                    }
                }
                else
                {
                    if (node.Parent == null)
                        i--;
                    treeView1.Nodes.Remove(node);
                }
                return i;
            }
      

  6.   

    先改一下试试private void SearchDelTreeNode(TreeNodeCollection myCollect)
    {
        foreach (TreeNode tn in myCollect)
        {
            if (tn.Nodes.Count == 0)
            {
                myCollect.Remove(tn);
            }
            else
            {
                SearchDelTreeNode(tn.Nodes);
            }
        }

      

  7.   

    for (int i = 0; i < tv_Menu.Nodes[0].ChildNodes.Count; i++)//第一级模块目录
                {
                   if (tv_Menu.Nodes[0].ChildNodes[i].ChildNodes.Count == 0)
                    {
                        tv_Menu.Nodes[0].ChildNodes.Remove(tv_Menu.Nodes[0].ChildNodes[i]);
                        i--;
                    }
                }
      

  8.   

    我发现了,foreach 不能用,删除节点后,集合就乱了.下面代码,我测试通过了.你试试private void DelTreeNode(TreeNodeCollection myCollect)
    {
        for (int i=0 ;i<myCollect.Count;i++)
        {
            if (myCollect[i].Nodes.Count == 0)
            {
                myCollect[i].Remove();
                i--;
            }
            else DelTreeNode(myCollect[i].Nodes);
        }
    }