2014-11-20 2 views
0

나는 사용하여 시도 :TreeView에서 모든 노드의 인덱스를 가져 오는 방법은 무엇입니까?

TreeNode node = TreeView1.FindNode() 

을하지만 루트 노드가 발견 만. 하위 노드를 찾을 수 없습니다.

모든 노드의 색인을 가져오고 싶습니다. 그리고 위의 코드를 사용하여 색인으로 노드를 찾고 확인란을 선택하고 싶습니다.

모든 노드를 반복하기 위해 foreach을 사용해 보았지만 하위 노드와 색인을 찾을 수 없습니다. 당신이 쓸 수

public static IEnumerable<T> Traverse<T>(
    this IEnumerable<T> source 
    , Func<T, IEnumerable<T>> childrenSelector) 
{ 
    var stack = new Stack<T>(source); 
    while (stack.Any()) 
    { 
     var next = stack.Pop(); 
     yield return next; 
     foreach (var child in childrenSelector(next)) 
      stack.Push(child); 
    } 
} 

이 사용 : : 그런 다음 할 수

var allNodes = new[]{root}.Traverse(node => node.Nodes); 

을 내가 2013

+0

예. 누락 된 태그를 추가했습니다. – RKh

답변

2

다음 방법은 당신이 트리를 통과 할 수 있도록 비주얼 스튜디오를 사용하고

전체 트리에서 모든 노드의 순서로 원하는 것은 무엇이든지 원하는대로 선택하십시오.

+0

은 무엇입니까? TreeNode 노드입니까? – RKh

+0

@RKh 일반적인 주장입니다. 그것은 당신이 원하는 무엇이든 될 수 있습니다. 이 메소드는'TreeNode' 인스턴스가 아닌 모든 * 트리를 트래버스 할 수 있습니다. – Servy

+0

TreeView의 경우 정확히 전달할 대상은 무엇입니까? TreeView 이름 또는 모든 유형? – RKh

관련 문제