居然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; }
}