問題なく正常に構築されたツリー ビューがあります。
すべてのノードをループするのではなく、現在選択されているノードでノードのループを開始する方法はありますか?
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
}
問題なく正常に構築されたツリー ビューがあります。
すべてのノードをループするのではなく、現在選択されているノードでノードのループを開始する方法はありますか?
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
}
これを行うには、拡張メソッドを使用できます。
public static class TreeViewEx
{
public static List<TreeNode> GetAllNodes(this TreeNode Node)
{
List<TreeNode> list = new List<TreeNode>();
list.Add(Node);
foreach (TreeNode n in Node.Nodes)
list.AddRange(GetAllNodes(n));
return list;
}
}
次のように使用します。
TreeNode node = myTree.SelectedNode;
List<TreeNode> list = node.GetAllNodes();
List
返されるノードには開始ノード (最初に選択したノード) が含まれることを指摘しておく必要があります。
これは、各子ノードをチェックして子があるかどうかを確認する必要がある正しい方向に導くのに役立つ場合があります。
TreeView treeView = new TreeView();
TreeNode parentNode = treeView.SelectedNode;
if (parentNode.GetNodeCount(true) > 0)
{
foreach (TreeNode childNodes in parentNode.Nodes)
{
//// do stuff with nodes.
}
}