Brauche bitte Hilfe [Listview]

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von colognestyler.

    Brauche bitte Hilfe [Listview]

    Hallo alle und eine guten Tag

    Ich habe ein Problem.Ich speichere meine Listview in eine Textdatei was auch funktioniert.Ich unterteile sie mit diesen Zeichen "##".

    Jetzt ist mein Problem das er es nicht richtig lädt. Der Code:

    VB.NET-Quellcode

    1. Public Function ListViewLoad(ByRef LstVw As ListView, ByVal Path As String)
    2. Dim sLine As String
    3. Dim sItem() As String
    4. Dim IntCols As Integer
    5. IntCols = LstVw.Columns.Count
    6. With LstVw.Items
    7. sLine = lv
    8. sItem = Split(sLine, "##")
    9. ListView1.Items.Add(sItem(0), sItem(1))
    10. For I = 2 To IntCols
    11. ListView1.Items(0).SubItems.Add(sItem(I))
    12. Next I
    13. End With
    14. End Function


    Hierbei zeigt er nur eine Datei an obwohl es mehrere Dateien waren. Bitte wirklich um Hilfe.

    MfG Tim Schlueter
    Irgendwie macht der Code noch keinen Sinn! Wie wird der aufgerufen? Was wird als ListView übergeben?

    Ansonsten definierst du sLine wird aber nie zugewiesen.
    Dann in der Schleife ließt du die Items der übergebenen ListView aus und schreibst wieder etwas in die ListView1 ??

    Aber ich glaube der eigenltiche Fehler liegt hier

    VB.NET-Quellcode

    1. ListView1.Items(0).SubItems.Add(sItem(I))


    Du Addest ein Item jedoch weist du immer NUR dem ersten SubItems zu. Also wenn ich mit SubItems eines Items arbeite mache ich es immer so:

    VB.NET-Quellcode

    1. With ListView1.Items.Add(sItem(0), sItem(1))
    2. For I As Integer = 2 To IntCols
    3. .SubItems.Add(sItem(I))
    4. Next I
    5. End With


    Achso noch was, du nutzt eine Funktion hast aber kein Rückgabewert? wieso keine Sub?
    gehts ned einfach so?

    VB.NET-Quellcode

    1. Dim sItem = Split(sLine, "##")
    2. Dim IntCols = ListView1.Columns.Count
    3. For i = 0 To (sItem.Length - 1) Step IntCols
    4. With ListView1.Items.Add(sItem(i))
    5. For j = 1 To IntCols - 1
    6. .SubItems.Add(sItem(i + j))
    7. Next
    8. End With
    9. Next
    sLine ist der Text hier = "C:\Users\Tim\Desktop\ts-lock.tsproj##C:\Users\Tim\Desktop\ts-lock.tsproj##
    C:\Users\Tim\Desktop\Windows6.0-KB936330-X86-wave0.exe##C:\Users\Tim\Desktop\Windows6.0-KB936330-X86-wave0.exe##
    C:\Users\Tim\Desktop\Setup.SED##C:\Users\Tim\Desktop\Setup.SED##
    C:\Users\Tim\Desktop\Setup.exe##C:\Users\Tim\Desktop\Setup.exe##
    C:\Users\Tim\Desktop\assemblyCompressor.exe##C:\Users\Tim\Desktop\assemblyCompressor.exe##
    " und wird dann gesplittet in sItem durch die Zeichen "##"
    Und das soll alles in die LsitView?

    Dann haste auch hier ein Fehler

    VB.NET-Quellcode

    1. ListView1.Items.Add(sItem(0), sItem(1))


    denn der zweite Parameter bei Add() ist die angabe eines ImageKeys, laut IntelliSense.

    Also ich würde es so machen

    VB.NET-Quellcode

    1. sItem = sLine.Split("##")
    2. With ListView1.Items.Add(sItem(0))
    3. For I As Integer = 1 To sItem.Count - 1
    4. .SubItems.Add(sItem(I))
    5. Next I
    6. End With


    Das sollte eigentlich funktionieren!
    Kommischer weise Funktioniert des imma noch net. Der aktuelle Code ist so:

    VB.NET-Quellcode

    1. Public Sub ListViewLoad(ByRef LstVw As ListView, ByVal Path As String)
    2. Dim sLine As String = lv
    3. Dim sItem() As String
    4. Dim IntCols As Integer
    5. IntCols = LstVw.Columns.Count = -1
    6. sItem = sLine.Split("##")
    7. With ListView1.Items.Add(sItem(0))
    8. For I As Integer = 1 To sItem.Count - 1
    9. .SubItems.Add(sItem(I))
    10. Next I
    11. End With
    12. End Sub


    Aufrufen tuhe ich es so:

    VB.NET-Quellcode

    1. ListViewLoad(ListView1, "")
    . Einfügen tuhe ich von der Textdatei so:

    VB.NET-Quellcode

    1. FileOpen(1, ofd.FileName, OpenMode.Input, OpenAccess.Read, OpenShare.LockRead)
    2. Input(1, Produktname.Text)
    3. Input(1, Version.Text)
    4. Input(1, Firmenname.Text)
    5. Input(1, Fenstertitel.Text)
    6. Input(1, Speichern_unter.Text)
    7. Input(1, w7_) 'Windows 7
    8. Input(1, wvista_) 'Windows vista
    9. Input(1, wxp_) 'Windows xp
    10. Input(1, w2000_) 'Windows 2000
    11. Input(1, wme_) 'Windows me
    12. Input(1, wnt4_) 'Windows NT 4.0
    13. Input(1, wnt3_) 'Windows NT 3.0
    14. Input(1, wnt2_) 'Windows NT 2.0
    15. Input(1, wnt1_) 'Windows NT 1.0
    16. Input(1, w98se_) 'Windows 98 SE
    17. Input(1, w98_) 'Windows 98
    18. Input(1, w95_) 'Windows 95
    19. Input(1, ver_) 'Verknüpfungen erstellen Checkbox
    20. Input(1, inst_) 'Installationspfad ändern CheckBox
    21. Input(1, success_) 'Fertigstellen Dialog CheckBox
    22. Input(1, oberer_text.Text)
    23. Input(1, c_text.Text)
    24. Input(1, de_name.Text)
    25. Input(1, hp.Text)
    26. Input(1, lv) ' Dies ist der Text mit den "##" Zeichen was gesplittert werden soll und ihns listview eingefügt werden soll
    versuchs mal so

    VB.NET-Quellcode

    1. Public Sub ListViewLoad()
    2. Dim sLine As String = lv
    3. Dim sItem() As String
    4. Dim IntCols As Integer
    5. IntCols = LstVw.Columns.Count = -1
    6. sItem = Split(sLine, "##")
    7. IntCols = ListView1.Columns.Count
    8. For i = 0 To (sItem.Length - 1) Step IntCols
    9. With ListView1.Items.Add(sItem(i))
    10. For j = 1 To IntCols - 1
    11. .SubItems.Add(sItem(i + j))
    12. Next
    13. End With
    14. Next
    15. End Sub
    Ja endlich vielen vielen Dank. Hat endlich funktioniert. Danke Danke Danke

    Könntet ihr mir auch vieleicht sagen wie ich das alles auch noch mit einer 2 Listview machen kann aber mit Spalten.

    Erste Spalte : Datei
    2 Spalte: Name
    3 Spalte : Ort

    MfG Tim Schlueter