⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodeserializer.vb

📁 Mastering VBNet Include Source Code
💻 VB
字号:
Option Strict On
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Soap

Public Class NodeSerializer
    <Serializable()> Structure sNode
        Dim node As String
        Dim level As Integer
    End Structure
    Dim GlobeNodes As New ArrayList()


    Public Sub LoadNodes(ByVal TV As TreeView, ByVal fName As String)
        TV.Nodes.Clear()
        Dim formatter As SoapFormatter
        Dim openFile As FileStream
        openFile = File.Open(fName, FileMode.Open)
        formatter = New SoapFormatter()
        GlobeNodes = CType(formatter.Deserialize(openFile), ArrayList)
        openFile.Close()
        showNodes(TV)
    End Sub

    Private Sub showNodes(ByVal TV As TreeView)
        Dim o As Object
        Dim currNode As TreeNode
        Dim level As Integer = 0
        Dim fromLowerLevel As Integer

        Dim i As Integer
        For i = 0 To GlobeNodes.Count - 1
            o = GlobeNodes(i)
            Dim oNode As sNode = CType(o, sNode)
            If oNode.level = level Then
                If currNode Is Nothing Then
                    currNode = TV.Nodes.Add(oNode.node.ToString)
                Else
                    currNode = currNode.Parent.Nodes.Add(oNode.node.ToString)
                End If
            Else
                If oNode.level > level Then
                    currNode = currNode.Nodes.Add(oNode.node.ToString)
                    level = oNode.level
                Else
                    While oNode.level <= level
                        currNode = currNode.Parent
                        level = level - 1
                    End While
                    currNode = currNode.Nodes.Add(oNode.node.ToString)
                End If
            End If
            TV.ExpandAll()
            Application.DoEvents()
        Next
    End Sub

    Public Sub CreateList(ByVal node As TreeNode, ByVal fName As String)
        Static level As Integer
        Dim thisNode As TreeNode
        Dim myNode As sNode
        Application.DoEvents()
        myNode.level = level
        myNode.node = node.Text
        GlobeNodes.Add(myNode)
        If node.Nodes.Count > 0 Then
            level = level + 1
            For Each thisNode In node.Nodes
                CreateList(thisNode, fName)
            Next
            level = level - 1
        End If
        SaveNodes(fName)
    End Sub

    Private Sub SaveNodes(ByVal fName As String)
        Dim formatter As SoapFormatter
        Dim saveFile As FileStream
        saveFile = File.Create(fName)
        formatter = New SoapFormatter()
        formatter.Serialize(saveFile, GlobeNodes)
        saveFile.Close()
    End Sub

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -