void ReadNodes(Node n){
    foreach (Node n1 in n.Children){
        print(n1.text);
        ReadNodes(n1);
    }
}注:以上只是示意性代码。

解决方案 »

  1.   

    下面的代码是点击一个节点,使它的所有子节点都选中的代码,也是用递归
    private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
    CheckChild(e.Node,e.Node.Checked);
    }
    private void CheckChild(TreeNode tnc,bool check)
    {
    if ( tnc.Nodes.Count != 0 )
    {
    foreach ( TreeNode tn in tnc.Nodes )
    {
    tn.Checked = check;
    CheckChild(tn,check);
    }
    }}
      

  2.   

    public void AddTree(int ParentID,TreeNode pNode) 
    {
       DataSet ds = (DataSet) this.ViewState["ds"]; 
       DataView dvTree = new DataView(ds.Tables[0]);
       //过滤ParentID,得到当前的所有子节点
       dvTree.RowFilter =  "[PARENTID] = " + ParentID;
       foreach(DataRowView Row in dvTree) 
       {
          TreeNode Node=new TreeNode() ;
          if(pNode == null) 
     {
    Node.Text = Row["Name"].ToString();
    TreeView1.Nodes.Add(Node);
    Node.Expanded=false;
    AddTree(Int32.Parse(Row["ID"].ToString()), Node);    //再次递归
     } 
           else 
    {
    Node.Text = Row["Name"].ToString();
    pNode.Nodes.Add(Node);
    Node.Expanded = false;
    AddTree(Int32.Parse(Row["ID"].ToString()),Node);     //再次递归
    }
       }                   
    }         仔细看看!:)
      

  3.   

    注:“DataSet ds = (DataSet) this.ViewState["ds"]”这句话的作用就是先定义一个数据集。 
      

  4.   

    其实你大可以参照MSDN里面的TreeView类
      

  5.   

    用 songbird说的方法是最恰当的
      

  6.   

    下面的代码绝对管用,我已用它和其他一个方法实现了将TreeView中的节点保存到文件和其相反的操作。
    private void ListNode(TreeNode treeNode)
    {
       listBox.Item.Add(treeNode.Text);
       foreach (TreeNode tn in treeNode.Nodes)
       {
          ListNode(tn);
       }
    }private void CallListNode(TreeView treeView)
    {
       TreeNodeCollection nodes = treeView.Nodes;
       foreach (TreeNode n in nodes)
       {
          ListNode(n);
       }
    }
      

  7.   

    我的目的是这样的:TreeView1中每个节点放置不同的图片,我想将它们赋给TreeView2。注意:TreeView1的text 和TreeView2的text不一样,不能覆盖。请问该如何解决??如果可以,马上给分!!!
      

  8.   

    微软的MSDN有简单实现方法!!!循环访问 Windows 窗体 TreeView 控件的所有节点请参见
    树视图中的每个 TreeNode 对象具有可用于定位树视图的属性:FirstNode、LastNode、NextNode、PrevNode 和 Parent。Parent 属性值是当前节点的父节点。当前节点如果有子节点,则列在它的 Nodes 属性中。TreeView 控件本身具有 TopNode 属性,该属性是整个树视图的根节点。循环访问 TreeView 控件的所有节点 创建测试每个节点的递归过程(C# 和 C++ 中为递归方法)。 
    调用该过程。 
    下例显示如何打印每个 TreeNode 对象的 Text 属性: 
    // C#
    private void PrintRecursive(TreeNode treeNode)
    {
       // Print the node.
       System.Diagnostics.Debug.WriteLine(treeNode.Text);
       MessageBox.Show(treeNode.Text);
       // Print each node recursively.
       foreach (TreeNode tn in treeNode.Nodes)
       {
          PrintRecursive(tn);
       }
    }// Call the procedure using the TreeView.
    private void CallRecursive(TreeView treeView)
    {
       // Print each node recursively.
       TreeNodeCollection nodes = treeView.Nodes;
       foreach (TreeNode n in nodes)
       {
          PrintRecursive(n);
       }
    }
      

  9.   

    zh33gl(春风秋雨) (
    你的从文件往会反的代码能贴出来看看吗
    我的子节点老是弄不对
    油箱
    [email protected]