In My.Settings über ArrayList Wert eintragen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    In My.Settings über ArrayList Wert eintragen

    Hallo,

    nach langer Zeit melde ich mich mal wieder mit einem kleinen Problem:
    Ich habe 5 My.Settings die ich beim Programmstart in eine ArrayList lade:

    VB.NET-Quellcode

    1. Dim CheckListe As New ArrayList
    2. Public Sub ChecksAdd()
    3. CheckListe.Add(My.Settings.ErsterCheck)
    4. CheckListe.Add(My.Settings.ZweiterCheck)
    5. CheckListe.Add(My.Settings.DritterCheck)
    6. CheckListe.Add(My.Settings.VierterCheck)
    7. CheckListe.Add(My.Settings.FuenfterCheck)
    8. End Sub


    Später sollen in diese Settings bestimmte Werte in einer Schleife geschrieben werden und zwar versuch ich das so:

    VB.NET-Quellcode

    1. CheckListe(CheckNumber) = Zahl
    2. 'CheckNumber ist ein steigender Integer

    Die Variable "Zahl" (Integer) hat immer einen Wert, das hab ich überprüft. Aber trotzdem wird dieser Wert nicht in den MySettings gespeichert!? 8|
    Liegt das irgendwie an der ArrayList oder wie kann ich den Fehler beheben?

    Danke für jede Hilfe

    Grüße
    1) du musst nicht denken, wenn du in deiner Checklist zb den 1.Wert änderst, dass dann auch My.Settings.ErsterCheck geändert ist.
    2) ArrayList ist veraltet. Wenn du das aus einem Buch hast, schmeisses weg.
    3) die einzige Collection, die man in Settings definieren kann ist die StringCollection (eigentlich auch veraltet - aber die ham nix anneres)

    So kanns gehen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _Checks As New List(Of Integer)
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. For Each s As String In My.Settings.Checks
    5. _Checks.Add(Integer.Parse(s))
    6. Next
    7. ListBox1.DataSource = _Checks
    8. End Sub
    9. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    10. _Checks(0) = 99
    11. End Sub
    12. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    13. Dim changed As New Specialized.StringCollection
    14. For Each numb In _Checks
    15. changed.Add(numb.ToString)
    16. Next
    17. My.Settings.Checks = changed
    18. End Sub
    19. End Class

    Beachte, dass der gesamte Settings-Eintrag ausgetauscht wird, nicht nur ein Item