[FRAGE]Alle Comboboxeinträge speichern?!

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TG22997.

    [FRAGE]Alle Comboboxeinträge speichern?!

    Hallo liebe com,
    ich habe eine Frage und zwar: Ich möchte ein programm schreiben, dass wenn man auf den Button1 klickt, dass dann der gesammte Inhalt einer Combobox gespeichert wird. Ist das mit dem Streamwriter möglich? Würde mich sehr dankbar zeigen , wenn jemand sogar einen Code hochladen könnte.


    MfG
    Du kannst alle Items mit einer Schleife durchgehen lassen und in eine String Collection hinzufügen. Diese Collection danach ab speichern.
    Sinngemäss:
    Col As String
    For i As Integer = 0 To Combobox1.Items.Count-1
    col &= Combobox1.Items(i).tostring & vbCrLf
    Next
    IO:File.WriteAllText(pfad, col)


    Grüsse
    Pascal
    Besser durch Serialisierung, dabei wird eine ComboBox erst in eine Liste gelesen und die dann serialisiert:

    VB.NET-Quellcode

    1. ' speichert eine Combobox in eine Datei
    2. Sub Speichern()
    3. ' combobox in Liste auslesen, da Controls nicht serialisierbar sind
    4. Dim lst As New List(Of String)
    5. For Each item As String In cmbBox.Items
    6. lst.Add(item)
    7. Next
    8. ' stream und serializer definieren
    9. Dim xs As New System.Xml.Serialization.XmlSerializer(lst.GetType)
    10. Dim fs As Stream = New FileStream("comboBox.xml", FileMode.Create)
    11. ' serialisieren
    12. xs.Serialize(fs, lst)
    13. fs.Close()
    14. End Sub
    15. ' Liest eine ComboBox aus einer Datei
    16. Sub Lesen()
    17. ' Liste einlesen
    18. Dim lst As New List(Of String)
    19. ' stream und serializer definieren
    20. Dim fs As Stream = New FileStream("comboBox.xml", FileMode.OpenOrCreate)
    21. Dim xs As New System.Xml.Serialization.XmlSerializer(lst.GetType)
    22. ' deserialisieren
    23. lst = CType(xs.Deserialize(fs), List(Of String))
    24. fs.Close()
    25. ' combobox fuellen
    26. cmbBox.Items.Clear()
    27. For Each item As String In lst
    28. cmbBox.Items.Add(item)
    29. Next
    30. ' 1.Element anzeigen
    31. cmbBox.SelectedIndex = 0
    32. End Sub
    Dann lieber so:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim eArray As ArrayList
    3. Private Sub Save_ComboBox()
    4. eArray = New ArrayList(ComboBox1.Items)
    5. End Sub
    6. End Class

    ruft man so auf:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Call Save_ComboBox() 'bzw. Save_ComboBox()
    3. End Sub


    2.Methode falls die andere nicht funktioniert:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim eArray As ArrayList
    3. Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. eArray = New ArrayList
    5. For Each item As String In ComboBox1.Items
    6. eArray.Items.Add(item)
    7. Next
    8. End Sub
    9. End Class


    Um es wieder hineinzuladen:

    VB.NET-Quellcode

    1. Private Sub Load_in()
    2. ComboBox1.Items.Clear()
    3. ComboBox1.Items.AddRange(eArray)
    4. End Sub
    5. 'oder
    6. Private Sub Button2_Click(ByVal sender as Object, ByVal e As System.EventArgs) Handles Button2.Click
    7. ComboBox1.Items.Clear()
    8. ComboBox1.Items.AddRange(eArray)
    9. End Sub


    mfg Tim ;)
    Da es Arrays gibt braucht man die auch nicht zu serialisieren...
    Deshalb nützt der einfache code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim eArray As ArrayList
    3. Sub Speichern()
    4. 'eArray erstellen
    5. eArray = New ArrayList
    6. For Each item As String In ComboBox1.Items
    7. eArray.Add(item)'fügt einzelne Items hinzu
    8. Next 'schließt die For-Schleife
    9. 'deklariert einen Dialog
    10. Dim sfd As new SaveFileDialog
    11. 'deklariert den StreamWriter der das Textdokument streamen soll.
    12. Dim sw As IO.StreamWriter
    13. With sfd 'with vereinfachung
    14. .Filter = "Textdokument(*.txt)|*.txt"
    15. If .ShowDialog = DialogResult.OK Then 'frägt ab ob der Dialog mit OK geschlossen wurde
    16. sw = New IO.StreamWriter(.FileName) 'deklariert den StreamWriter erneut um den Pfad anzugeben
    17. For Each item As String In eArray 'öffnet For Schleife was das streamen des dokuments ausführt
    18. sw.WriteLine(item)
    19. Next
    20. sw.Close()
    21. End If
    22. End With
    23. End Sub
    24. Sub Öffnen()
    25. Dim ofd As New OpenFileDialog
    26. Dim openText As String()
    27. With ofd 'vereinfachung mit with schleife
    28. .Filter = "Textdokument(*.txt)|*.txt"
    29. If .ShowDialog = DialogResult.OK Then
    30. openText = IO.File.ReadAllLines(.FileName)
    31. ComboBox1.Items.Clear()
    32. For Each text As String In openText
    33. ComboBox1.Items.Add(text)
    34. Next
    35. End If
    36. End With
    37. End Sub
    38. End Class


    Habe ich jetzt aus dem Kopf herraus geschrieben sollte aber funktionieren.
    mfg Tim ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TG22997“ ()