Treeview liste Haupt- und Unterordner auflisten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Treeview liste Haupt- und Unterordner auflisten

    Hallo Leute,
    ich sitze mal wieder an ein kleines Programm und wieder hab ich mal ein denkfehler :(

    Das Programm soll aus einer csv datei eine zeile einlesen und diese in vier teile aufteilen
    und ensprechend Genre(4) in haubt oder Unterverzeichiss in "Treeview" antzeigen.
    Aber es wird gar nichts angezeigt

    VB.NET-Quellcode

    1. Option Explicit On
    2. Option Strict On
    3. Imports System.IO
    4. Public Class Form1
    5. Dim fs As FileStream
    6. Dim sr As StreamReader
    7. Dim Zeile As String
    8. Dim Datei As String = "c:\TV\Test.csv"
    9. Dim länge As Integer
    10. Dim Zähler As Integer
    11. Dim Zeichen As String
    12. Dim cnt As Integer
    13. Dim Genre(4) As String
    14. Dim pos1 As Integer
    15. Dim std As String
    16. Dim DOM As String
    17. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    18. fs = New FileStream(Datei, FileMode.Open)
    19. sr = New StreamReader(fs)
    20. Do Until sr.Peek() = -1
    21. Zeile = sr.ReadLine
    22. länge = Len(Zeile)
    23. cnt = 1
    24. pos1 = 1
    25. For Zähler = 1 To länge
    26. Zeichen = Mid(Zeile, Zähler, 1)
    27. If Zeichen = ";" Then
    28. Genre(cnt) = Mid(Zeile, pos1, Zähler)
    29. If Genre(4) = "DOM" Then
    30. TreeView1.Nodes.Add(Genre(2), Genre(1))
    31. End If
    32. If Genre(4) = "SUB" Then
    33. TreeView1.Nodes(std).Nodes.Add(Genre(2), Genre(1))
    34. End If
    35. If cnt > 1 Then
    36. pos1 = Zähler + 1
    37. End If
    38. cnt = cnt + 1
    39. End If
    40. Next
    41. Loop
    42. End Sub
    43. End Class


    Danke schonmal für eure hilfe im vorraus
    1. Schritt: Wenn nicht zwangsläufig so ein Konstrukt notwendig ist, hau den Microsoft.BisualBasic-Namespace raus.
    2. Die Funktion IO.File.ReadAllLines gibt Dir alle Zeilen einer Datei als String-Array wieder.
    3. Die Funktion Split (und zwar als String-Extension!) teilt Dir einen String in Teilstrings auf, sodass Du bei einem Text abc;de;fghi mit dem Code Dim Textsplitter = "abc;de;fghi".Split(";"c) als Textsplitter rausbekommst:
    • abc
    • de
    • fghi
    4. Dann teste erstmal, ob Du mit 1-3 Teststrings überhaupt mit Deinem TreeView-Code einen gewünschten Baum rausbekommst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo,
    danke für deine Hilfe

    Sript sieht wie folgt aus , und funktioniert wie gewünscht :)

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. fs = New FileStream(Datei, FileMode.Open)
    3. sr = New StreamReader(fs)
    4. Do Until sr.Peek() = -1
    5. Zeile = sr.ReadLine
    6. Dim Teil() As String = Split(Zeile, ";")
    7. If Teil(3) = "DOM" Then
    8. TreeView1.Nodes.Add(Teil(1), Teil(0))
    9. DOM = Teil(1)
    10. Else
    11. If Teil(3) = "SUB" Then
    12. TreeView1.Nodes(DOM).Nodes.Add(Teil(1), Teil(0))
    13. End If
    14. End If
    15. Loop
    16. End Sub

    Mein .Net-Gegenvorschlag:

    VB.NET-Quellcode

    1. Dim Lines = IO.File.ReadAllLines(Datei)
    2. For Each Line In Lines
    3. Dim Teil = Line.Split(";"c)
    4. If Teil(3) = "DOM" Then
    5. TreeView1.Nodes.Add(Teil(1), Teil(0))
    6. DOM = Teil(1)
    7. ElseIf Teil(3) = "SUB" Then
    8. TreeView1.Nodes(DOM).Nodes.Add(Teil(1), Teil(0))
    9. End If
    10. Next

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.