public class NodeTag
{
public string node_id;
}          //递归添加树的节点
public void AddTree(string ParentID,TreeNode pNode)
{
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter =  "[parent_id] = '" + ParentID+"'";
 
foreach(DataRowView Row in dvTree) 
{
TreeNode Node=new TreeNode();
if(pNode == null) 
{    //添加根节点
Node.Text = Row["node_name"].ToString();
MyNodeTag.node_id = Row["node_id"].ToString();
Node.Tag = MyNodeTag;
treeView1.Nodes.Add(Node);
AddTree(Row["node_id"].ToString(), Node); //再次递归

else 
{   //?添加当前节点的子节点
Node.Text = Row["node_name"].ToString();
MyNodeTag.node_id = Row["node_id"].ToString();
Node.Tag = MyNodeTag;
pNode.Nodes.Add(Node);
AddTree(Row["node_id"].ToString(),Node); //再次递归
}
}                   
}
我这样做下来整个树的Node.Tag的MyNodeTag.node_id的值都为递归到最后一个node_id
高手帮我看看啊,谢谢了

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
        tempTag = (NodeTag)(treeView1.SelectedNode.Tag);
        textBox1.Text = tempTag.node_id;
                          textBox2.Text=treeView1.SelectedNode.Text;
    }我是这样取得Tag值的
      

  2.   

    MyNodeTag每次AddTree的时候new了么?
      

  3.   

    Node是不是定义在函数外面了。拿进来
      

  4.   

    lovefootball(蟑螂) 谢谢了,我就是没重新定义MyNodeTag      但没次都要 NodeTag MyNodeTag = new NodeTag(); 是不是不好,有没有更好的方法