【问题标题】:Convert tabbed text into treeview将选项卡式文本转换为树视图
【发布时间】:2017-01-06 22:44:05
【问题描述】:

在VB.NET中,如何转换这种格式的多行字符串...

Area 52
   Sector 19
      Stage 7
      Library 15
   Sector 32
      Link 30
      Portal 20`

...(每个缩进都是一个 vbTab),进入如下的树形视图控件:

image of treeview example

我认为递归函数可以正常工作,但我不知道如何创建一个可以正常工作的函数。

【问题讨论】:

    标签: vb.net winforms recursion treeview


    【解决方案1】:

    首先,您需要解析您的字符串。创建一个将存储您的数据的对象。在伪代码中:

    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
    猜你喜欢
    • 2012-07-20
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多