private void bind_tree(string ChildNodes, TreeNode tn )//这里
 { 
DataTable dt = acesSql.getTreeCatalog(ChildNodes).Tables[0]; 
foreach (DataRow dr in dt.Rows)
 {
 TreeNode Node = new TreeNode(); 
   if (tn == null) 
   { 
     Node.Text = dr["menuText"].ToString(); 
     this.treeView1.Nodes.Add(Node); 
      bind_tree(dr["nodeId"].ToString(), Node); //这里

  else 
   {
     Node.Text = dr["menuText"].ToString();
    tn.Nodes.Add(Node);
    bind_tree(dr["nodeId"].ToString(), Node);//这里
 } 
}
 }如果函数定义 private void bind_tree(string ChildNodes, TreeNode tn )改成 private void bind_tree(object obj)
那么 递归处   bind_tree(dr["nodeId"].ToString(), Node);要怎么改呢?

解决方案 »

  1.   

    private void bind_tree(object obj)
    obj 包含两个字段,一个string ChildNodes, 一个TreeNode tn否则没办法
      

  2.   

    新建一个类MyState作为参数传递给objprivate  void bind_tree(object obj)
    {
        string ChildNodes = ((MyState)obj).Info;
        TreeNode tn = ((MyState)obj).Number;
        DataTable dt = acesSql.getTreeCatalog(ChildNodes).Tables[0];
        foreach (DataRow dr in dt.Rows)
        {
            TreeNode Node = new TreeNode();
            if (tn == null)
            {   Node.Text = dr["menuText"].ToString();
                treeView1.Nodes.Add(Node);            MyState aa = new MyState(dr["nodeId"].ToString(),Node);//这里及以下 的递归该怎么写呢?
                object bb=(object) aa;
                bind_tree(bb);
            }
            else
            { 
                Node.Text = dr["menuText"].ToString();
                tn.Nodes.Add(Node);            MyState aa = new MyState(dr["nodeId"].ToString(), Node);//这里及以下 的递归该怎么写呢?
                object bb = (object)aa;
                bind_tree(bb);
            }
        }
    }递归处该怎么写?
      

  3.   

    private  void bind_tree(object obj)
    {
        string ChildNodes = ((MyState)obj).Info;
        TreeNode tn = ((MyState)obj).Number;
        DataTable dt = acesSql.getTreeCatalog(ChildNodes).Tables[0];
        foreach (DataRow dr in dt.Rows)
        {
            TreeNode Node = new TreeNode();
            if (tn == null)
            {   Node.Text = dr["menuText"].ToString();
                treeView1.Nodes.Add(Node);            MyState aa = new MyState(dr["nodeId"].ToString(),Node);//这里及以下 的递归该怎么写呢?
                object bb=(object) aa;
                bind_tree(bb);
            }
            else
            { 
                Node.Text = dr["menuText"].ToString();
                tn.Nodes.Add(Node);            MyState aa = new MyState(dr["nodeId"].ToString(), Node);//这里及以下 的递归该怎么写呢?
                object bb = (object)aa;
                bind_tree(bb);
            }
        }
    }谢谢,上面加粗处(递归处) 写得正确吗?应该怎么写?