반응형
TreeView는 계층적 구조를 갖는 데이터를 보기 좋게 표현하는데 편리하다. Button1, TextBox1을 폼에 만들어 넣는다. TreeView 하나를 추가하고 그 이름을 [Tree]라고 하자.
[예제1] Tree에 데이터 싣기. 폼이 로드될 때 데이터도 같이 싣는다.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Tree.PathSeparator = "-"
Tree.ShowPlusMinus = True
Tree.Nodes.Clear()
Tree.Nodes.Add("대한민국")
'방법1
Tree.Nodes(0).Nodes.Add("경기도")
Tree.Nodes(0).Nodes(0).Nodes.Add("안양")
Tree.Nodes(0).Nodes(0).Nodes.Add("수원")
Tree.Nodes(0).Nodes(0).Nodes.Add("평택")
'방법2
Dim N1 As New TreeNode("춘천")
Dim N2 As New TreeNode("강릉")
Dim N3 As New TreeNode("원주")
Dim Cities() As TreeNode = {N1, N2, N3}
Dim State As New TreeNode("강원도", Cities)
Tree.Nodes(0).Nodes.Add(State)
'방법3
Tree.Nodes(0).Nodes.Add("충청북도")
Dim CB As TreeNodeCollection = Tree.Nodes(0).Nodes(2).Nodes
CB.Add("청주") : CB.Add("괴산") : CB.Add("충주")
'방법4
Dim NdCN As TreeNode = New TreeNode("충청남도")
Tree.Nodes(0).Nodes.Add(NdCN)
Dim K As Integer = Tree.Nodes(0).Nodes.IndexOf(NdCN)
Dim CN As TreeNodeCollection = Tree.Nodes(0).Nodes(K).Nodes
CN.Add("천안") : CN.Add("아산") : CN.Add("보령")
'방법5
Tree.Nodes(0).Nodes.Add("전라북도")
Dim L As Integer = Tree.Nodes(0).Nodes.Count - 1
Dim JB As TreeNodeCollection = Tree.Nodes(0).Nodes(L).Nodes
JB.Add("전주") : JB.Add("군산") : JB.Add("남원")
Tree.ExpandAll()
End Sub
[예제2] 어떤 아이템(노드라 한다)을 선택하면 그 선택항목을 TextBox1에 적는다. 만약 [충청북도]을 선택했다면
Private Sub Tree_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles Tree.AfterSelect
TextBox1.Text = Tree.SelectedNode.Text
End Sub
기타 노드에 대해 얻을 수 있는 정보들은 다음과 같다. 만약 지정한 노드가 없으면 에러가 된다.
TextBox1.Text = Tree.SelectedNode.Text '충청북도
TextBox1.Text = Tree.SelectedNode.Index '=2. 노드가 속한 그룸에서의 인덱스. 맨위=0
TextBox1.Text = Tree.SelectedNode.FullPath '대한민국-충청북도
TextBox1.Text = Tree.SelectedNode.Parent.Text '대한민국
TextBox1.Text = Tree.SelectedNode.PrevNode.Text '강원도. 없으면 에러로 된다.
TextBox1.Text = Tree.SelectedNode.NextNode.Text '충청남도
TextBox1.Text = Tree.SelectedNode.FirstNode.Text '청주
TextBox1.Text = Tree.SelectedNode.LastNode.Text '충주
TextBox1.Text = Tree.SelectedNode.Nodes.Count '3 ... 자식노드의 갯수
[예제3] 충청남도 노드가 확장되어 있으면 축소하고 축소되어 있으면 확장한다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ND As TreeNode
For Each ND In Tree.Nodes(0).Nodes
If ND.Text = "충청남도" Then Exit For
Next
If ND Is Nothing Then MsgBox("노드가 없네요") Else ND.Toggle()
End Sub
[예제4] 모든 노드를 축소하고 충청남도만 확장한다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Tree.Nodes(0).ExpandAll()
Dim ND As TreeNode
For Each ND In Tree.Nodes(0).Nodes
If ND.Text = "충청남도" Then
ND.ExpandAll()
Else
If ND.IsExpanded Then ND.Toggle()
End If
Next
End Sub
[예제5] 노드의 삭제
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then
MsgBox("삭제할 노드를 고르세요")
Else
Tree.Nodes(0).Nodes.Remove(Tree.SelectedNode)
Tree.SelectedNode = Nothing '이게 없으면 삭제된 다음 노드가 선택된 것으로 여긴다.
End If
End Sub
[예제6] 노드 값의 수정
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then
MsgBox("수정할 노드를 고르세요")
Else
Tree.SelectedNode.Text = "다음"
End If
End Sub
[예제7] 노드의 삽입/추가
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then MsgBox("삽입할 노드를 고르세요") : Exit Sub
Dim K As Integer = Tree.SelectedNode.Index
Dim Papa As TreeNode = Tree.SelectedNode.Parent
Dim ND As New TreeNode("신도시")
Papa.Nodes.Insert(K, ND) '선택노드 앞에 추가
Papa.Nodes.Add("공항") '맨뒤에 추가
End Sub
기타 속성들
Tree.Indent = 40 '각 계층간 들여쓰기의 크기. 초기치는 19
[예제1] Tree에 데이터 싣기. 폼이 로드될 때 데이터도 같이 싣는다.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Tree.PathSeparator = "-"
Tree.ShowPlusMinus = True
Tree.Nodes.Clear()
Tree.Nodes.Add("대한민국")
'방법1
Tree.Nodes(0).Nodes.Add("경기도")
Tree.Nodes(0).Nodes(0).Nodes.Add("안양")
Tree.Nodes(0).Nodes(0).Nodes.Add("수원")
Tree.Nodes(0).Nodes(0).Nodes.Add("평택")
'방법2
Dim N1 As New TreeNode("춘천")
Dim N2 As New TreeNode("강릉")
Dim N3 As New TreeNode("원주")
Dim Cities() As TreeNode = {N1, N2, N3}
Dim State As New TreeNode("강원도", Cities)
Tree.Nodes(0).Nodes.Add(State)
'방법3
Tree.Nodes(0).Nodes.Add("충청북도")
Dim CB As TreeNodeCollection = Tree.Nodes(0).Nodes(2).Nodes
CB.Add("청주") : CB.Add("괴산") : CB.Add("충주")
'방법4
Dim NdCN As TreeNode = New TreeNode("충청남도")
Tree.Nodes(0).Nodes.Add(NdCN)
Dim K As Integer = Tree.Nodes(0).Nodes.IndexOf(NdCN)
Dim CN As TreeNodeCollection = Tree.Nodes(0).Nodes(K).Nodes
CN.Add("천안") : CN.Add("아산") : CN.Add("보령")
'방법5
Tree.Nodes(0).Nodes.Add("전라북도")
Dim L As Integer = Tree.Nodes(0).Nodes.Count - 1
Dim JB As TreeNodeCollection = Tree.Nodes(0).Nodes(L).Nodes
JB.Add("전주") : JB.Add("군산") : JB.Add("남원")
Tree.ExpandAll()
End Sub
[예제2] 어떤 아이템(노드라 한다)을 선택하면 그 선택항목을 TextBox1에 적는다. 만약 [충청북도]을 선택했다면
Private Sub Tree_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles Tree.AfterSelect
TextBox1.Text = Tree.SelectedNode.Text
End Sub
기타 노드에 대해 얻을 수 있는 정보들은 다음과 같다. 만약 지정한 노드가 없으면 에러가 된다.
TextBox1.Text = Tree.SelectedNode.Text '충청북도
TextBox1.Text = Tree.SelectedNode.Index '=2. 노드가 속한 그룸에서의 인덱스. 맨위=0
TextBox1.Text = Tree.SelectedNode.FullPath '대한민국-충청북도
TextBox1.Text = Tree.SelectedNode.Parent.Text '대한민국
TextBox1.Text = Tree.SelectedNode.PrevNode.Text '강원도. 없으면 에러로 된다.
TextBox1.Text = Tree.SelectedNode.NextNode.Text '충청남도
TextBox1.Text = Tree.SelectedNode.FirstNode.Text '청주
TextBox1.Text = Tree.SelectedNode.LastNode.Text '충주
TextBox1.Text = Tree.SelectedNode.Nodes.Count '3 ... 자식노드의 갯수
[예제3] 충청남도 노드가 확장되어 있으면 축소하고 축소되어 있으면 확장한다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ND As TreeNode
For Each ND In Tree.Nodes(0).Nodes
If ND.Text = "충청남도" Then Exit For
Next
If ND Is Nothing Then MsgBox("노드가 없네요") Else ND.Toggle()
End Sub
[예제4] 모든 노드를 축소하고 충청남도만 확장한다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Tree.Nodes(0).ExpandAll()
Dim ND As TreeNode
For Each ND In Tree.Nodes(0).Nodes
If ND.Text = "충청남도" Then
ND.ExpandAll()
Else
If ND.IsExpanded Then ND.Toggle()
End If
Next
End Sub
[예제5] 노드의 삭제
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then
MsgBox("삭제할 노드를 고르세요")
Else
Tree.Nodes(0).Nodes.Remove(Tree.SelectedNode)
Tree.SelectedNode = Nothing '이게 없으면 삭제된 다음 노드가 선택된 것으로 여긴다.
End If
End Sub
[예제6] 노드 값의 수정
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then
MsgBox("수정할 노드를 고르세요")
Else
Tree.SelectedNode.Text = "다음"
End If
End Sub
[예제7] 노드의 삽입/추가
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tree.SelectedNode Is Nothing Then MsgBox("삽입할 노드를 고르세요") : Exit Sub
Dim K As Integer = Tree.SelectedNode.Index
Dim Papa As TreeNode = Tree.SelectedNode.Parent
Dim ND As New TreeNode("신도시")
Papa.Nodes.Insert(K, ND) '선택노드 앞에 추가
Papa.Nodes.Add("공항") '맨뒤에 추가
End Sub
기타 속성들
Tree.Indent = 40 '각 계층간 들여쓰기의 크기. 초기치는 19