在Windows Form中,我添加了这样一个事件:
treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
现在我想根据e.Node来得到它的根节点,请问应当怎样实现?

解决方案 »

  1.   

    在.Net Framework1.1的环境下,调用TreeView控件,生成树图,点选父节点,则所有的子结点也选中,取消选中的父节点下的子结点,则父节点也取消选中状态。TreeView.jsfunction check(treeview1)
    {
        cIndex=treeview1.clickedNodeIndex;
    pNode=treeview1.getTreeNode(cIndex);
    Checked(pNode);
    UnChecked(pNode);
    }function Checked(node)
    {
    var NodeArray=node.getChildren();
    checked = node.getAttribute("checked");
    for(var i=0;i<NodeArray.length;i++)
        {
            cNode=NodeArray[i];
    cNode.setAttribute('checked',checked);
            if (cNode.getChildren().length > 0)
            {
    Checked(cNode);
    }
    }
    }function UnChecked(node)
    {
    checked = node.getAttribute("Checked");
    if (!checked && node.getParent()!= null)
    {
    node.getParent().setAttribute('checked',checked);
    UnChecked(node.getParent());
    }
    }
      

  2.   

    但是getParent()方法只能得到该节点的父级节点啊,我是想得到该节点的根节点
      

  3.   

    用递规的方法,算法如下:node  为结点,函数最终返回根结点node findparent ( node )
    {
       if (node.getparent == null)
       {   
           return node;
        }
       else
       {
           return findparent(node.getparent)
        }
    }
      

  4.   

    同意楼上,递归实现Node findparent(Node n)
    {
    if (n.GetParent!=null)
        findparent(n)
    else
        return n;
    }