Dynamisches erstellen von Nodes in einem Treeview

  • VB6

    Dynamisches erstellen von Nodes in einem Treeview

    Guten Tag zusammen,

    ich möchte mir meine Arbeit etwas erleichtern und mit deswegen ein Kleines Tool programmieren.

    Ich Sollte eine Datei Einlesen und mit den Daten aus dieser Datei ein Treeview befüllen.

    Zuerst einmal eine Beschreibung was überhaupt passieren soll.

    Ich habe ein Textfeld in das ich einen Pfad für eine Datei eingebe.

    Bei einem Click auf Button 1 wird dann die Datei in eine Stringlist eingelesen.

    Dann soll nach einer Zeile gesucht werden die in etwa so aussieht: (zeile 29)

    <text prefix="System/Group_Alarm" id="5">

    Hier soll dann in dem Treeview ein Node mit dem Namen System und darin ein Childnode mit namen Group_Alarm erstellt werden, das klappt auch gut. (zeile 30 bis 47)

    Nun ist es so das nach der oben genannten Zeile noch beliebig viele weitere Zeilen kommen können bis irgendwann der Block mit "</text>" abgeschlossen wird
    und dann soll für jede Zeile Zwischen "<text " und "</text>" ein Node unter dem Childnode erstellt werden, und genau da bekomme ich probleme.

    Ich Dachte mir das so das ich ja durch die Variable i (zeile 23) weiß an welcher stelle das "<text " steht.
    Nun wollte ich dann mir einer weiteren For schleife von diesem Punkt aus weiter nach "</text>" suchen und dann für alles zwischen diesen Zeilen einen Node erstellen (zeile 49 - 56)
    aber es passiert rein garnichts un dich komme momentan einfach nicht drauf wieso :S

    Hier mal der Code:


    Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. If My.Computer.FileSystem.FileExists(TextBox1.Text) Then
    3. Dim sr As StreamReader = New StreamReader(TextBox1.Text)
    4. Dim sl As New List(Of String)
    5. Dim Nodes As TreeNodeCollection = TreeView1.Nodes
    6. Dim MainNode As String = ""
    7. Dim ChildNode As String = ""
    8. Do While sr.Peek() >= 0
    9. sl.Add(sr.ReadLine())
    10. Loop
    11. sr.Close()
    12. ListBox1.Items.Clear()
    13. TreeView1.Nodes.Clear()
    14. MainNode = ""
    15. ChildNode = ""
    16. For i As Integer = 0 To sl.Count - 1
    17. If Nodes.Count > 0 Then
    18. TreeView1.SelectedNode = Nodes(0)
    19. End If
    20. If Not InStr(sl.Item(i), "<text ") = 0 Then
    21. MainNode = Replace(sl.Item(i), sl.Item(i).Substring(0, InStr(sl.Item(i), "prefix=") + 7), "")
    22. MainNode = Mid(MainNode, 1, (InStr(MainNode, """") - 1))
    23. If Not InStr(MainNode, "/") = 0 Then
    24. ChildNode = Mid(MainNode, InStr(MainNode, "/") + 1, Len(MainNode) - 1)
    25. MainNode = Mid(MainNode, 1, InStr(MainNode, "/") - 1)
    26. End If
    27. If Not FindNode(MainNode, TreeView1.Nodes) Then
    28. TreeView1.Nodes.Add(MainNode)
    29. End If
    30. If ChildNode <> "" Then
    31. If Not FindNode(ChildNode, TreeView1.Nodes) Then
    32. TreeView1.SelectedNode = SetNode(MainNode, TreeView1.Nodes)
    33. TreeView1.SelectedNode.Nodes.Add(ChildNode)
    34. End If
    35. End If
    36. For i2 As Integer = i To sl.Count - 1
    37. If Not InStr(sl.Item(i), "</text>") = 0 Then
    38. TreeView1.SelectedNode = SetNode(ChildNode, TreeView1.Nodes)
    39. For i3 As Integer = i + 1 To i2 - 1
    40. TreeView1.SelectedNode.Nodes.Add(sl.Item(i3))
    41. Next
    42. End If
    43. Next
    44. End If
    45. ListBox1.Items.Add(sl.Item(i))
    46. Next
    47. Else
    48. MsgBox("File not found.")
    49. End If
    50. End Sub



    Würde mich über etwas Hilfe freuen, evtl sieht ja noch jemand etwas das man schöner oder übersichtlicher lösen kann.

    Grüße

    JayMo