请教高手,怎样实现通过输入节点名或节点index将treeview自动定位到那里?比如说我的treeview的结构是1、1.1、1.2、2、3、4我通过输入1.1,如何将它定位到1.1那个节点。谢谢。

解决方案 »

  1.   

    我生成树的代码如下:
    TreeNode newroot = new TreeNode();
    newroot.ID="";
    newroot.Text="总目录";
    CatalogTree.Nodes.Add(newroot);
    FillTree(newroot,ds);//ds为一datasetprivate void FillTree(TreeNode root,DataSet ds)
    {
      for(int i=0;i<ds.Tables[0].Rows.Count;i++)
      {
    TreeNode newroot = new TreeNode();
    newroot.ID=ds.Tables[0].Rows[i]["catalogid"].ToString().Trim();
    newroot.Text=newroot.ID.ToString().Trim()+"."+ds.Tables[0].Rows[i]["catalogname"].ToString().Trim();
    root.Nodes.Add(newroot);
    FillTree(newroot,ds1);
      }
    }
      

  2.   

    foreach(TreeNode tn in e.Node.Nodes )
    {
       if(tn.Text=="xxxx")
       {
          tn.IsSelected = true;
       }
    }
      

  3.   

    如果是web的方式话且用的是microsoft webcontrols的话,可以通过SelectedNodeIndex来设置;
    而form方式的话,没有简便的方法。
      

  4.   

    改进了一下
    private void GetAllNode(System.Windows.Forms.TreeNodeCollection nodes) 
    {  


    foreach(System.Windows.Forms.TreeNode tn in nodes) 
    {
    if(tn.Text==textBox1.Text)
    {
    treeView1.SelectedNode = tn;
    }
    GetAllNode(tn.Nodes); 


    } private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    GetAllNode(treeView1.Nodes); }
      

  5.   

    这个问题确实比较麻烦,你可以通过继承treeview来实现记录其索引结构,然后实现他的查找方法。
    或者你把目录结构定义在数据库表中,在初始化树把他的结构位置绑定到treeview的TAG属性也可以。
      

  6.   

    arice1983(一粒米) ( ) 信誉:100  2005-11-29 16:08:00  得分: 0  
     
     
       改进了一下
    private bool GetAllNode(System.Windows.Forms.TreeNodeCollection nodes) 
    {  


    foreach(System.Windows.Forms.TreeNode tn in nodes) 
    {
    if(tn.Text==textBox1.Text)
    {
    treeView1.SelectedNode = tn;
                                              return true;
    }
    if (true == GetAllNode(tn.Nodes))
    {
    return true;
    }

                              return false;
    } private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    GetAllNode(treeView1.Nodes); }  
     
      

  7.   

    Knight94(愚翁),我搞的是web程序,我试过用SelectedNodeIndex,但没搞定,可能不会用,能详细说一说吗?
      

  8.   

    arice1983(一粒米),我的Node没IsSelected属性,Treeview也没SelectedNode,这是不是因为我用的是webcontrols的缘故?还是其他原因呢?谢谢
      

  9.   

    http://adandelion.cnblogs.com/articles/235681.html
    http://www.cnblogs.com/renyu732/archive/2005/09/27/244735.html
      

  10.   

    搞了几天还是没解决。我现在的问题是如何在生成树的时候获取它的index。比如说我的树有三层,第一层第一个节点的第二层的第一个节点的index应该是0.0,我应该怎样获取?
      

  11.   

    执行FindInTree(你的节点的Text)private void FindInTree(string strNodeName)
    {  
        foreach (TreeNode tn in TreeView1.Nodes)            
        {
            if (tn.Text != strNodeName)
            {   
                FindInTree(tn,strNodeName);
            } 
            else
            {   
                ExpandTree(tn);
                return;
            }
        }
    }private void FindInTree(TreeNode objTreeNode,string strNodeName)
    {   
        foreach (TreeNode tn in objTreeNode.Nodes)            
        {
            if (tn.Text != strNodeName)
            {
                FindInTree(tn,strNodeName);
            } 
            else
            {   
                ExpandTree(tn);
                return;
            }
        }
    }private void ExpandTree(TreeNode objTreeNode)
    {   
        string strIndex = "0";    objTreeNode.Expanded = true;
        
        strIndex = objTreeNode.GetNodeIndex();    while (objTreeNode.Parent is TreeNode)
        {
            objTreeNode = ((TreeNode)objTreeNode.Parent);
            objTreeNode.Expanded = true;                
        }    TreeView1.SelectedNodeIndex = strIndex;
    }