Form mit ListView öffnen, Items adden, speichern

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von KingTimon.

    Form mit ListView öffnen, Items adden, speichern

    Hi Leute,

    Ich programmier grad an einem Vokabeltrainer. Um alle Lektionen, die man schon abgeschlossen hat, mit allen Details sehen zu können, hab ich folgendes geschrieben:

    Dies ist der Aufruf nach einer abgebrochenen/abgeschlossenen Lektion in der Abfrageform:

    VB.NET-Quellcode

    1. frmResult.ShowDialog()
    2. Dim LVI As New ListViewItem
    3. LVI.Text = Lektion
    4. LVI.SubItems.Add(Now.ToString)
    5. LVI.SubItems.Add("Abgebrochen")
    6. LVI.SubItems.Add((CInt(Label_Richtige.Text) + CInt(Label_Fehler.Text) + Liste.Count).ToString)
    7. LVI.SubItems.Add(Label_Richtige.Text)
    8. LVI.SubItems.Add(Label_Fehler.Text)
    9. LVI.SubItems.Add(Label_Fehlerquote.Text)
    10. frmResult.AddItem(LVI)
    11. Me.Close()


    Dieser Code ist der, der Form frmResult, also die Form, in dem in einer Listview, alle Lektionen detailliert dargestellt werden sollen:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class frmResult
    3. Private Sub Auswertung_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    4. LVISave()
    5. End Sub
    6. Private Sub Einheitenliste_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. LVILoad()
    8. End Sub
    9. Private Sub LVISave()
    10. Using Writer As New System.IO.StreamWriter(System.IO.File.Open(IO.Path.GetDirectoryName(Application.ExecutablePath) & "\Vokabeltrainer\Auswertung.ini", IO.FileMode.Create))
    11. For Each Lektion As ListViewItem In ListView1.Items
    12. Dim EinheitStr As String = Lektion.Text
    13. For Each Item As ListViewItem.ListViewSubItem In Lektion.SubItems
    14. EinheitStr &= "|" & Item.Text
    15. Next
    16. Writer.WriteLine(EinheitStr)
    17. Next
    18. End Using
    19. End Sub
    20. Private Sub LVILoad()
    21. ListView1.Items.Clear()
    22. Using Reader As New System.IO.StreamReader(System.IO.File.Open(Application.ExecutablePath & "\Vokabeltrainer\Auswertung.ini", System.IO.FileMode.Open))
    23. While Not Reader.EndOfStream
    24. Dim Line As String = Reader.ReadLine
    25. Line = Line.Substring(Line.Split("|"c).First.Length)
    26. Dim LVI As New ListViewItem
    27. LVI.Text = Line.Split("|"c).First
    28. For Each SubItem As String In Line.Split("|"c)
    29. LVI.SubItems.Add(SubItem)
    30. Next
    31. ListView1.Items.Add(LVI)
    32. End While
    33. End Using
    34. End Sub
    35. Public Sub AddItem(ByVal LVI As ListViewItem)
    36. LVILoad()
    37. ListView1.Items.Add(LVI)
    38. LVISave()
    39. End Sub
    40. End Class


    Nun funktioniert hier irgendetwas nicht richtig. Nach dem Aufruf kommt eine leere Listview. Wenn ich ein zweites Mal die Form öffnen will, ohne die Anwendung zwischendurch neu zu starten, wird gleich kein Fenster angezeigt.
    An was kann das liegen?

    MFG
    Auf der Suche nach Coding-Kursen auf Lence.at
    EDIT: Hab nach langem beobachten der .ini File und dem Code herausgefunden, wie ich es machen kann. Ist zwar kein gutes Ergebnis, aber es funktioniert (Danke für jedes Kommentar, jedoch sehe ich diesen Fall als abgeschlossen)

    Danke an @KaskadekingDE!

    MFG

    PS: Ich denke ich werde meinen Vokabeltrainer bald im Showroom hochladen. Weil: 1. Das Forum und viele seiner Mitglieder mir geholfen haben, mein Projekt zu realisieren, da will ich mich bedanken und jedem die Möglichkeit geben, es zu nützen und 2. Vlt findet der eine oder andere noch einen Bug/Verbesserungsvorschlag ;)
    Auf der Suche nach Coding-Kursen auf Lence.at

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „KingTimon“ ()

    KingTimon schrieb:

    Verbesserungsvorschlag
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    danke, soweit ich das gelesen hab, ist das genau das was ich ohnehin schon geändert habe. @RodFromGermany
    Auf der Suche nach Coding-Kursen auf Lence.at