按级别扩展和折叠Treeview [英] Expanding and Collapsing the Treeview by level
本文介绍了按级别扩展和折叠Treeview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在普通的Windows窗体控件中按级别扩展和折叠Treeview。请用vb.net或c#代码解释。
How to attain Expanding and Collapsing the Treeview by level in normal windows forms control.please explain with vb.net or c# code.
推荐答案
你能提供一个吗?你想要的截图。
Can you provide a screenshot of what exactly you want.
我找到了解决方案我自己
I found out the solution Myself
Public Class Form1
Dim CurrentLevel As Integer
Dim MaxLevel As Integer
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With TreeView1
.BeginUpdate()
.Nodes.Add("Account")
.Nodes(0).Nodes.Add("PORT: My Work Services")
.Nodes(0).Nodes(0).Nodes.Add("OFF: Global Field Services")
.Nodes(0).Nodes(0).Nodes(0).Nodes.Add("ITSVC: Moves")
.Nodes(0).Nodes(0).Nodes(0).Nodes.Add("ITSVC: Installs")
.Nodes(0).Nodes(0).Nodes(0).Nodes.Add("ITSVC: Maintenance")
.Nodes(0).Nodes(0).Nodes.Add("OFF: Service Desk")
.Nodes(0).Nodes(0).Nodes(1).Nodes.Add("ITSVC: Incident Management")
.Nodes(0).Nodes(0).Nodes(1).Nodes.Add("ITSVC: Change Management")
.Nodes(0).Nodes(0).Nodes(1).Nodes.Add("ITSVC: Problem Management")
.Nodes(0).Nodes.Add("PORT: Data Center")
.Nodes(0).Nodes(1).Nodes.Add("OFF: Mainframe")
.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("ITSVC: Applications")
.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("ITSVC: Database")
.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("ITSVC: Web")
.Nodes(0).Nodes(1).Nodes.Add("OFF: Midrange")
.Nodes(0).Nodes(1).Nodes(1).Nodes.Add("ITSVC: App")
.Nodes(0).Nodes(1).Nodes(1).Nodes.Add("ITSVC: DB")
.Nodes(0).Nodes(1).Nodes(1).Nodes.Add("ITSVC: Internet")
.EndUpdate()
.Nodes(0).ExpandAll()
End With
MaxLevel = 3
CurrentLevel = 3
End Sub
' Call the procedure using the top nodes of the treeview.
Private Sub ExpandToLevel(Direction As String, Optional SpecificLevel As Integer = -1)
Dim Node As TreeNode
TreeView1.BeginUpdate() 'BeginUpdate() and EndUpdate() seems to be the equivalent of Tlist.Redraw = True and False
If SpecificLevel = -1 Then
Select Case Direction
Case "Expand"
If CurrentLevel < MaxLevel Then
CurrentLevel += 1
End If
Case "Collapse"
If CurrentLevel > 0 Then
CurrentLevel -= 1
End If
End Select
Else
CurrentLevel = SpecificLevel
End If
For Each Node In TreeView1.Nodes 'Always level 0
If CurrentLevel = 0 Then
Node.Collapse()
Else
Node.ExpandAll()
ExpandToLevelRecursive(Node)
End If
Next
TreeView1.EndUpdate()
End Sub
Private Sub ExpandToLevelRecursive(ByVal ParentNode As TreeNode)
Dim ChildNode As TreeNode
For Each ChildNode In ParentNode.Nodes
Debug.Print(ChildNode.Text)
If ChildNode.Level = CurrentLevel Then
ChildNode.Collapse()
Else
ExpandToLevelRecursive(ChildNode)
End If
Next
End Sub
Private Sub ExpandToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ExpandToolStripMenuItem.Click
ExpandToLevel("Expand")
End Sub
Private Sub CollapseToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles CollapseToolStripMenuItem.Click
ExpandToLevel("Collapse")
End Sub
Private Sub AccountToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles AccountToolStripMenuItem.Click
ExpandToLevel("Not Used By the ExpandToLevel Sub", 0)
End Sub
Private Sub PortfolioToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles PortfolioToolStripMenuItem.Click
ExpandToLevel("Not Used By the ExpandToLevel Sub", 1)
End Sub
Private Sub OfferingToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles OfferingToolStripMenuItem.Click
ExpandToLevel("Not Used By the ExpandToLevel Sub", 2)
End Sub
Private Sub ITServiceToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ITServiceToolStripMenuItem.Click
ExpandToLevel("Not Used By the ExpandToLevel Sub", 3)
End Sub
End Class
这篇关于按级别扩展和折叠Treeview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文