문제없이 잘 구성된 트리보기가 있습니다.현재 선택한 트리보기의 노드를 반복합니다.
현재 선택한 노드의 노드를 모두 반복하는 대신 루프를 반복하는 방법이 있습니까?
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.
}
}
선택된 노드가 다른의 후손 인 경우 ... 그것은 홉 무엇을 계층 구조를 백업하고 모든 연속적인 계층으로 다시 드릴 업 하시겠습니까? 아니면 네가있는 노드의 자식 노드 일 뿐이야? – DonBoitnott
선택한 노드에서 시작하게하고 선택한 노드와 연결된 하위 노드로만 드릴 다운합니다. 따라서 선택된 노드는 최상위 dog/Pardent 노드가되고 그 아래의 모든 노드는 반복됩니다. – JPJedi
깊이를 알고 있지 않으면 (즉, 어딘가에 하드 코딩되어 변경되지 않을 경우) 아래쪽으로 드릴하는 재귀 루프가 필요합니다. 'theCurrentNode.Nodes'를 통해 반복되는 일련의 루프입니다. – DonBoitnott