现在的位置: 首页 > 综合 > 正文

TreeView 定位的问题

2012年02月16日 ⁄ 综合 ⁄ 共 3376字 ⁄ 字号 评论关闭
文章目录

请教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 楼

行了,谢谢各位。  
  结贴:)

本问题地址:http://topic.csdn.net/t/20051129/15/4426159.html

抱歉!评论已关闭.