VB.NET 2008/VB - 컨트롤

컨트롤 - TreeView 컨트롤

본클라쓰 2011. 4. 25. 09:59

TreeView 컨트롤을 사용하면 Windows 운영 체제의 Windows 탐색기 왼쪽 창에 파일과 폴더가 표시되는 것처럼 노드 계층을 사용자에게 표시할 수 있다.

 

 

트리 뷰의 각 노드는 자식 노드라고 하는 다른 노드를 포함할 수 있다. 부모 노드나 자식 노드를 포함하는 노드를 확장 또는 축소 형태로 표시할 수 있다. 또한 트리 뷰의 CheckBoxes 속성을 true로 설정하여 노드 옆에 확인란이 표시되는 형태로 트리 뷰를 표시할 수 있다. 그러면 노드의 Checked 속성을 true 또는 false로 설정하여 프로그래밍 방식으로 노드를 선택하거나 삭제할 수 있다.

 

TreeView 컨트롤의 주요 속성은 Nodes SelectedNode 이다. Nodes 속성은 트리 뷰의 최상위 노드 목록을 포함한다. SelectedNode 속성은 현재 선택된 노드를 설정한다. 노드 옆에 아이콘을 표시할 수 있다. 컨트롤은 트리 뷰의 ImageList 속성에 이름이 지정된 ImageList 의 이미지를 사용한다.

 

ImageIndex 속성은 트리 뷰의 노드에 대한 기본 이미지를 설정한다. 기본 이미지를 설정하면 각 노드 옆에 아이콘을 표시할 수 있는데, 아이콘은 노드 텍스트의 바로 왼쪽에 배치된다. 이러한 아이콘을 표시하려면 트리뷰를 ImageList 컨트롤과 연결해야 한다.

 

TreeView1.ImageList = ImageList1

 

 

노드의 ImageIndex SelectedImageIndex 속성을 설정한다. ImageIndex 속성은 보통 및 확장 상태의 노드에 대해 표시되는 이미지를 결정하고 SelectedImageIndex 속성은 선택된 상태의 노드에 대해 표시되는 이미지를 결정한다.

 

' (Assumes that ImageList1 contains at least two images and
' the TreeView control contains a selected image.)
TreeView1.SelectedNode.ImageIndex = 0
TreeView1.SelectedNode.SelectedImageIndex = 1

 

 

TreeView 컨트롤은 해당 Nodes 컬렉션에 최상위 노드를 저장한다. 또한 각 TreeNode에는 자식 노드를 저장하기 위한 고유한 Nodes 컬렉션이 있다. 이 두 컬렉션 속성은 모두 TreeNodeCollection 형식이다. 이 형식은 노드 계층 구조의 단일 수준에서 노드를 추가, 제거 및 다시 정렬할 수 있도록 하는 표준 컬렉션 멤버를 제공한다.

 

' Adds new node as a child node of the currently selected node.
Dim newNode As TreeNode = New TreeNode("Text for new node")
TreeView1.SelectedNode.Nodes.Add(newNode)

 

노드 값으로 계산하기 위해 TreeView 컨트롤의 모든 노드를 검사해야 할 경우가 있다. 이 작업은 트리의 각 컬렉션에 있는 모든 노드를 반복하는 재귀 프로시저를 사용하여 수행할 수 있다.

 

트리 뷰의 각 TreeNode 개체에는 트리뷰를 탐색하는 데 사용할 수 있는 FirstNode, LastNode, NextNode, PrevNode, Parent 등의 속성이 있다. Parent 속성 값은 현재 노드의 부모 노드이다. 현재 노드의 자식 노드가 있을 경우 Nodes 속성에 이러한 자식 노드가 나열된다. TreeView 컨트롤에는 전체 트리 뷰의 루트 노드인 TopNode 속성이 있다.

 

Private Sub PrintRecursive(ByVal n As TreeNode)

   System.Diagnostics.Debug.WriteLine(n.Text)
   MessageBox.Show(n.Text)


   Dim aNode As TreeNode
   For Each aNode In n.Nodes
      PrintRecursive(aNode)
   Next
End Sub

' Call the procedure using the top nodes of the treeview.
Private Sub CallRecursive(ByVal aTreeView As TreeView)


   Dim n As TreeNode
   For Each n In aTreeView.Nodes
      PrintRecursive(n)
   Next
End Sub

 

TreeView의 모든 트리 노드의 확장과 축소

 

CollapseAll 메서드를 사용하면 TreeView 컨트롤에 있는 모든 자식 트리 노드를 포함하여 TreeNode 개체를 모두 축소한다.

ExpandAll 메서드를 사용하면 TreeView 컨트롤에 있는 모든 자식 트리 노드를 포함하여 TreeNode 개체를 확장한다.

 

이 때 트리 노드가 확장될 때는 BeforeExpand 이벤트가 발생된다. 또한, 축소가 일어나기 전에 BeforeCollapse 이벤트가 발생된다.

 

 

'VB.NET 2008 > VB - 컨트롤' 카테고리의 다른 글

컨트롤 - DataGrid 컨트롤  (0) 2011.04.25
컨트롤 - ProgressBar 컨트롤  (0) 2011.04.25
컨트롤 - TextBox 컨트롤  (0) 2011.04.25
컨트롤 - RichTextBox 컨트롤  (0) 2011.04.25
RadioButton 컨트롤의 설명과 활용  (0) 2011.04.25