📄 nodeserializer.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 + -