class Node
Text as string
Level as Integer
end class
现在,您需要填写这些节点的列表
dim lines() as string = myString.split(Environment.NewLine)
迭代并研究线条
Dim nodeList as new List(Of Node)()
for each line as string in lines
dim lenBefore as integer = line.Length
dim lenAfter as integer = line.Trim().Length
dim n as new Node()
n.Text = line.Trim()
n.Level = (lenBefore - lenAfter) / numberOfEmptySpacesInIndent 'for example indent 4 spaces
next
现在,您有列表,您需要将其转换为Treeview
dim previousTreeNode as TreeNode
dim previousNode as Node
for each n as Node In nodeList
' here create new tree node using n.Text
dim newTreeNode = .....
if n.Level = 0 then
tv.Nodes.Add(newTreeNode)
else if n.Level = previousNode.Level Then
previousTreeNode.Parent.Nodes.Add(newTreeNode)
else if n.Level > previousNode.Level Then
previousTreeNode.Nodes.Add(newTreeNode)
else if n.Level < previousNode.Level Then
previousTreeNode.Parent.Parent.Nodes.Add(newTreeNode)
end if
previousNode = n
previousTreeNode = newTreeNode
next
1 回答
首先,你需要解析你的字符串 . 创建一个将存储数据的对象 . 在伪代码中:
现在,您需要填写这些节点的列表
迭代并研究线条
现在,您有列表,您需要将其转换为Treeview
这应该做到这一点 . 虽然,这是伪代码,我没有测试任何东西 . 如果你想要递归,你需要在行之间 Build 关系 . 此代码基于缩进并且没有任何关系 . 我猜,有可能,一旦你获得了基于缩进的级别,你就可以遍历节点列表来找到父级并添加属性 . 是的,如果您创建该对象结构,则很容易将其复制到树节点中 . 但那是双重工作 .