TreeView에서 Find 함수 사용 방법
Programming/C# / 2011. 11. 20. 14:34
[참조]
위에 보면 Find 함수를 쓴다.
[예: treeNode.Nodes.Find(string key, bool searchAllChildren)]
그런데 직접 만들고 써보니 찾지를 못한다..
[처음 삽질한 방법]
TreeNode.Nodes.Add("AAA");
TreeNode[] arrayTN = TreeNode.Nodes.Find("AAA", false);
뭘까..하고 이리저리 찾아보다보니..
TreeNode.Nodes.Add() 함수는 몇가지 오버로딩 함수를 가지는 데,
그 중,
1) TreeNode.Nodes.Add(string text);
2) TreeNode.Nodes.Add(string key, string text);
두가지 함수의 차이에 대해 알아야 될 것 같다.
첫 삽질에서 사용 한 함수는 1) 함수이다.
그런데 Find 함수의 첫 인자인 key는 Node의 Name이라고 위 참조글에 적혀 있다.
TreeNode.Nodes.Add("AAA"); 는 1) 함수에 보면 key(Name)가 아니라 text이다.
그래서 Name엔 기본값인 빈 문장("")이 들어가 있다.
결과적으로 Find로 찾는 Name값은 빈문장이기 때문에 "AAA"를 찾을 수 없다.
Find를 쓰려면 Node를 Add할 때 2) 함수로 추가를 해줘야 한다.
어차피 Text와 Name이 다를 필요가 없을 것 같아서 같게 해줬다.
[해결방법]
TreeNode.Nodes.Add("AAA", "AAA");
TreeNode.Nodes.Find("AAA", false);
P.s. Find 후 TreeNode[] 변수가 반환 되는데, 찾은 노드의 개수 판단은 Count가 아니라 Length 프로퍼티이다.
(Length가 0이면 찾는 항목이 없음.)
P.s.2 bool searchAllChildren 은 하위레벨 노드를 검색할 지 판단 변수이다. false로 하면 같은 레벨 노드에서만 검색을 한다.
나는 같은 레벨에서 검색이 필요하기 때문에 false를 했다.
반응형
'Programming > C#' 카테고리의 다른 글
effective c# - 1 (0) | 2011.11.29 |
---|---|
TreeNode Visual C# 도구 설명을 추가하는 방법 (0) | 2011.11.21 |
C# C++ COM Interop (0) | 2011.11.15 |
C#에서 포인터 (0) | 2011.11.15 |
TreeView 이용하기(추가/선택삭제/체크삭제) (0) | 2011.11.14 |