1. 程式人生 > >居然C#的treeview的treeNode沒有GetNext獲取下一節點

居然C#的treeview的treeNode沒有GetNext獲取下一節點

首先,C#裡面的TreeNode有curNode.NextNode獲取下一個節點的方法,但前提是獲取的兄弟節點(即同級節點),最後一個節點返回的是null。

而我們一般查詢TreeView裡面的節點後,下一節點一般指檢視上的下一個節點,若與當前節點同一級則是取下一個兄弟節點;若是最後1個節點,則需返回母節點的兄弟節點。

居然,網上還沒類似的方案,只有自己動手解決了。

解決方案如下:

        public TreeNode GetNextNode(TreeNode curNode)         {             if (curNode == null) return null;

            if (curNode.Nodes.Count > 0)             {                 return curNode.FirstNode; //1.返回自己的子節點優先             }             else //2.返回自己的兄弟節點             {                 if (curNode.NextNode != null)                 {                     return curNode.NextNode;                 }                 else //3.返回 父節點的兄弟節點                 {                     while (curNode.Parent != null)                     {                         curNode = curNode.Parent;                         if (curNode.NextNode != null) return curNode.NextNode;                     }                 }             }

            return null;         }

測試:

   private void button1_Click(object sender, EventArgs e)         {

            treeview1.SelectedNode = GetNextNode(treeview1.SelectedNode);             if (treeview1.SelectedNode != null)             {                 treeview1.SelectedNode.BackColor = Color.Red;             }

        }