按级别扩展和折叠Treeview [英] Expanding and Collapsing the Treeview by level

查看:67
本文介绍了按级别扩展和折叠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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆