TreeView 定位的问题
请教treeview定位的问题
请教高手,怎样实现通过输入节点名或节点index将treeview自动定位到那里?比如说我的treeview的结构是1、1.1、1.2、2、3、4。。。我通过输入1.1,如何将它定位到1.1那个节点。
1 楼
在网上找了很久都没找到答案,所以上这里来问问,希望高手能帮帮忙。谢谢
2 楼
我生成树的代码如下:   
  TreeNode   newroot   =   new   TreeNode();   
  newroot.ID="";   
  newroot.Text="总目录";   
  CatalogTree.Nodes.Add(newroot);   
  FillTree(newroot,ds);//ds为一dataset   
    
  private   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);   
    }   
  }
3 楼
foreach(TreeNode   tn   in   e.Node.Nodes   )   
  {   
        if(tn.Text=="xxxx")   
        {   
              tn.IsSelected   =   true;   
        }   
  }
4 楼
如果是web的方式话且用的是microsoft   webcontrols的话,可以通过SelectedNodeIndex来设置;   
  而form方式的话,没有简便的方法。
5 楼
改进了一下   
  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);   
    
  }   
6 楼
这个问题确实比较麻烦,你可以通过继承treeview来实现记录其索引结构,然后实现他的查找方法。   
  或者你把目录结构定义在数据库表中,在初始化树把他的结构位置绑定到treeview的TAG属性也可以。
7 楼
      
        改进了一下   
  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);   
    
  }   
8 楼
好,先谢各位了,我先看看。
9 楼
我搞的是web程序,我试过用SelectedNodeIndex,但没搞定,可能不会用,能详细说一说吗?
10 楼
arice1983(一粒米),我的Node没IsSelected属性,Treeview也没SelectedNode,这是不是因为我用的是webcontrols的缘故?还是其他原因呢?谢谢
11 楼
http://adandelion.cnblogs.com/articles/235681.html   
  http://www.cnblogs.com/renyu732/archive/2005/09/27/244735.html
12 楼
搞了几天还是没解决。我现在的问题是如何在生成树的时候获取它的index。比如说我的树有三层,第一层第一个节点的第二层的第一个节点的index应该是0.0,我应该怎样获取?
13 楼
执行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;   
  }
14 楼
谢谢古道热肠。看起来应该可以实现。   
  我先试试,确定行了再结贴。   
  谢谢各位。
15 楼
行了,谢谢各位。   
  结贴:)
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号