当前位置:首页
开发技术指南» 文章正文
    引言:

 ·关于tform的图像显示    »显示摘要«
    摘要: procedure tform1.formcreate(sender: tobject); var myimage : timage; myrect : trect; begin myimage:=timage.create(nil); myimage.autosize:=true; myimage.picture.loadfromfile(c:/myform.bmp); myrect.l......
 ·求助:struct的长度问题    »显示摘要«
    摘要: typedef struct { word dlgver; word signature; dword helpid; dword exstyle; dword style; word cdlgitems; short x; short y; short cx; short cy; } dlgtemplateex; 这个结构体的长度(size,即sizeof的结果)是多少?我觉得应该是2+......


问一个 treeview 高难度问题,如何定位焦点和展开特定节点。。。。不是那么简单的//

id pid txt  
  1 0 中国  
  2 0 日本  
  3 1 江西省  
  4 3 南昌  
  5 3 九江  
  6 4 中山街  
  7 4 女人街  
  8 1 福建省  
  9 8 福州  
  10 9 厦门  
  11               2                 东京  
  ----------------------------------------------------------  
  已知   ID=6   ,PID=4   ,如何只展开ID=6   相关的节点,其它节点都是关闭的,并把焦点定在ID=6节点上。如      
   
      [-]中国  
      |           |---[-]江西省  
      |           |                   |---[-]南昌    
      |           |                   |               |-----中山路     <---id=6,要展开此节点,并把焦点定在这里  
      |           |                   |               |-----女人街  
      |           |                   |---[+]九江  
      |           |---[+]福建省  
    ┕[+]日本

NO.1   作者: yj821

TreeView中,已知某子节点的ID,怎样使该节点选中并展开?    
  简单改一下,应该可以实现你的要求  
  //  
  //   选中节点  
  //  
  private   void   SetNodeSelected(TreeNode   node)  
  {  
  //  
  //   把当前节点所有父节点展开  
  //  
  TreeNode   tempNode   =   node;  
  while   (tempNode.Parent   is   TreeNode)  
  {  
  ((TreeNode)tempNode.Parent).Expanded   =   true;  
  tempNode   =   (TreeNode)tempNode.Parent;  
  }  
  //  
  //   把当前节点设置树的选中节点  
  //  
  TreeView1.SelectedNodeIndex   =   node.GetNodeIndex();  
  }  
  或者  
   
  ///   <summary>  
  ///   查找树中指定节点,并展开,至于选中看楼上的吧  
  ///   假设查找条件在TreeNode.Tag里  
  ///   </summary>  
  ///   <param   name="tree">要查找的树</param>  
  ///   <param   name="ID">要指定的条件</param>  
  public   void   FindNode(TreeNode   tree,int   ID)  
  {  
                    if((int)tree.Tag   ==   ID)  
  {  
  tree.Expand();  
  }  
  else  
  {  
  foreach(TreeNode   node   in   tree.Nodes)  
  {  
  FindNode(node,ID);  
  }  
  }  
  }  
 

NO.2   作者: lionelwy

up

NO.3   作者: swordragon

private   string   FindInTree()  
  {        
          string   strIndex   =   "0";  
   
          foreach   (TreeNode   tn   in   TreeView1.Nodes)                          
          {  
                  if   (tn.Text   !=   "Node5")  
                  {        
                          strIndex   =   FindInTree(tn);  
                  }    
                  else  
                  {        
                          strIndex   =   tn.GetNodeIndex();  
                          return   strIndex;  
                  }  
          }  
   
          return   strIndex;  
  }  
   
  private   string   FindInTree(TreeNode   objTreeNode)  
  {        
          string   strIndex   =   "0";  
   
          foreach   (TreeNode   tn   in   objTreeNode.Nodes)                          
          {  
                  if   (tn.Text   !=   "Node5")  
                  {  
                          strIndex   =   FindInTree(tn);  
                          if   (strIndex.Length   >   1)  
                          {  
                                  return   strIndex;  
                          }  
                  }    
                  else  
                  {  
                          strIndex   =   tn.GetNodeIndex();  
                          return   strIndex;  
                  }  
          }  
   
          return   strIndex;  
  }  
   
  private   void   ExpandTree(string   strIndex)  
  {  
          string[]   aryTemp;  
          string       strTemp   =   ""   ;  
   
          if   (strIndex.Trim().Length   >   0)  
          {  
                  aryTemp   =   strIndex.Split(new   Char[]{.});  
   
                  for   (int   i   =   0;   i   <   aryTemp.Length;   i++)  
                  {  
                          strTemp   =   "";  
   
                          for   (int   j   =   0;   j   <=   i;   j++)  
                          {  
                                  strTemp   =   strTemp   +   aryTemp[j]   +   ".";  
                          }  
   
                          strTemp   =   strTemp.Substring(0,strTemp.Length   -   1);  
   
                          TreeView1.SelectedNodeIndex   =   strTemp;  
                          TreeView1.GetNodeFromIndex(strTemp).Expanded   =   true;  
                  }  
          }  
  }  
   
  执行ExpandTree(FindInTree());即可。  
  替换程序中的"Node5"为你的"中山街"。  
   
  绝对原创,保证能用。

NO.4   作者: swordragon

优化了一下算法,呵呵。  
   
  执行FindInTree("中山路");即可。  
   
  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;  
  }


    摘要: 如题!!!!!!!1 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE