C# 재귀 함수 - TreeView 에서 전체 TreeNode 를 가져오는 방법. (How to recursive find Tree…
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. TreeView에서 Nodes로 전체 목록을 가져올거 같지만, 1 Depth만 가져옵니다. Node 하위로 Node들이 추가되어 있거나 여러 Depth를 가지는 경우에는 전체 Node를 가져올 수 없습니다. 이런 경우 사용하는게 Recursive Function(재귀 함수)인데요. 코드는 아래와 같습니다.
internal static TreeNode[] GetNodeList(TreeNodeCollection treeNodes, bool childAll)
{
List<TreeNode> nodes = new List<TreeNode>();
foreach (TreeNode node in treeNodes)
{
nodes.Add(node);
if (childAll)
{
if (node.Nodes.Count > 0)
{
GetNodeList(nodes, node);
}
}
}
return nodes.ToArray();
}
internal static TreeNode[] GetNodeList(List<TreeNode> treeNodes, bool childAll)
{
List<TreeNode> nodes = new List<TreeNode>();
foreach (TreeNode node in treeNodes)
{
nodes.Add(node);
if (childAll)
{
if (node.Nodes.Count > 0)
{
GetNodeList(nodes, node);
}
}
}
return nodes.ToArray();
}
위 코드는 GetNodeList를 다시 호출하여 하위 노드들도 가져올 수 있도록 해줍니다.
private static void GetNodeList(List<TreeNode> nodes, TreeNode node)
{
foreach (TreeNode n in node.Nodes)
{
nodes.Add(n);
if (n.Nodes.Count > 0)
GetNodeList(nodes, n);
}
}
코드를 좀 더 간소화하면 아래와 같이 처리할 수 있습니다.
internal static TreeNode[] GetNodeList(TreeNode node, bool childAll)
{
List<TreeNode> nodes = GetNodeList(node.Nodes.Cast<TreeNode>().ToList(), childAll).ToList();
nodes.Insert(0, node);
return nodes.ToArray();
}
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
추천0 비추천0
- 이전글Failed to load resource: net::ERR_FILE_NOT_FOUND 21.12.26
- 다음글Javascript 의 변수인 const와 let 그리고 var 차이점. 21.12.25
댓글목록
등록된 댓글이 없습니다.