2011-12-09 1 views
2

나는 비교기를 쓴 나는 Node.Tag.ToString()하지 theire Text으로하는 TreeView하지만 내가 비교해야의 부모 노드를 구현하고자합니다. 지금까지 내가 보았 듯이 TreeView.Sort()을 사용하여 과부하 또는이 작업을 수행하는 다른 기능은 없습니다.정렬 트 리뷰 노드

방법이나 해결 방법이 있습니까?

답변

4

IComparer가있는 경우 TreeViewNodeSorter 속성을 설정 한 다음 Sort를 호출하여 노드를 원하는대로 정렬 할 수있는 것처럼 보입니다. 해당 링크를 기반으로

예 -, 아니 널 (null) 검사 등을 시도하지 만 작동합니다 :

public class NodeSorter : IComparer 
{ 
    public int Compare(object x, object y) 
    { 
     TreeNode tx = x as TreeNode; 
     TreeNode ty = y as TreeNode; 
     return string.Compare(tx.Tag.ToString(), ty.Tag.ToString()); 
    } 
} 

그런 treeView1.TreeViewNodeSorter = new NodeSorter(); 당신의 설정에서.

+0

그래,하지만이 태그는'Tag'가 아닌'Text'를 기반으로합니다. –

+0

@ Sean87 :이 예제의'public class NodeSorter'를 링크의 맨 아래쪽으로 보면, 전달 된 객체 'IComparer'는 단지 텍스트가 아닌'TreeNode' 자체입니다. 이 예제는 여전히'Text' 속성 (내용보다는 길이로 정렬)을 사용하지만'Tag' 속성을 사용하면 안되는 이유는 없습니다. 예를 들어 편집 할 수 있습니다. – Rawling

+0

네 말이 맞다! 나는 노드의 텍스트를 전달하고 있었다! 얼마나 한심한가! 고마워요! –