大家好
  那位高手能给解决一个问题:
  C#中用treeView控件制作了个目录树。
  现知道了子节点的ID。想按指定的ID展开节点。
  用treeView1.Nodes[0].Nodes[1].Nodes[2].Expand();就可以达到我的目的了。但ID可能有许多。如(0,1,0,2,3,2.....),每一个数字就需要在上面的语句中增加一个Nodes[]。
  treeView1.Nodes[0].Nodes[1].Nodes[2]...........加个Nodes[].Expand();
  请问如何实现。 谢谢
  

解决方案 »

  1.   

    只想用动态添加Nodes[]的方法 如何递归 请指教
      

  2.   

    string[] str //每个数组存放一个节点
    private void  addNode(str )
    {
        TreeNode node;
        for(int i=0;i<=str.Length,i++)
         {
            if(i!=str.Length)
             {
                 node=node.Nodes[i]
              }
         }
         node.Expand(); 
    }就像我这样写 ,我随便写的 你稍微改一下!
      

  3.   

    string[] str //每个数组存放一个节点 
    private void  addNode(str ) 

        TreeNode node; 
        for(int i=0;i <=str.Length,i++) 
        { 
            if(i!=str.Length) 
            { 
                node=node.Nodes[str[i]] 
              } 
        } 
        node.Expand(); 
    } 就像我这样写 ,我随便写的 你稍微改一下!
      

  4.   

    谢谢你
     但是 你的代码不能实现我的需要。
     我需要解决:像treeView1.Nodes[0].Nodes[1].Nodes[2]...........加i个Nodes[].Expand();
     树 treeView1
     要节点Nodes[0]下的第2个节点.Nodes[1]下的第三个节点.Nodes[2]等等
     必须形成如:treeView1.Nodes[0].Nodes[1].Nodes[2].Expand();
    的语句。
     
      

  5.   

    TreeView 数据源是XML,操作XML就行了.引用一个XML类,有操作方法的.
      

  6.   

    你可以在节点展开事件里面,写个动态添加子节点的方法。根据父节点绑定的ID查询相应的子节点信息,返回Datatable,然后将所有数据循环添加到父节点下面
      

  7.   

    我调试过了我的结果和你要求的语句运行的结果是一样的:
    private void AddTree()
            {
                int[] str ={ 0, 0, 2 };
                TreeNode node = treeView1.Nodes[str[0]];
                for (int i = 1; i < str.Length; i++)
                {
                    node = node.Nodes[str[i]];
                }
                node.Expand();
            }
    不过只能展开一个节点,如果要把路径上所有节点都展开需要在for 里面加node.Expand();
    这里的数组你可以做成动态的,不固定数量,根据你实际情况便利数组!
      

  8.   

    谢谢
     经测试 你的代码是对的,但只能在已经展开的基础上进行。我将其修改为:
            private void AddTree()
            {
                int[] str ={ 0, 1, 28,0,13,3};
                TreeNode node = treeView1.Nodes[str[0]];
                node.Expand();
                for (int i = 1; i < str.Length; i++)
                {
                    node = node.Nodes[str[i]];
                node.Expand();
                }
            }
    测试完全正确,确保在所有树节点不是展开的情况下,也能展开指定的节点。
    再次谢谢 如何给你给分? 我是第一次在此论坛上发帖。见笑了。
    另:能交个朋友么? 我是江苏连云港的 你是那里的?
      

  9.   

      直接点结贴。wuhan city