Items einer ComboBox speichern

  • Allgemein

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von LetsHackMario.

    Items einer ComboBox speichern

    Wie kann man die Items einer ComboBox speichern? Also, damit ich beim Starten des Programms die hinzugefügten Items wieder da sind.
    Ich weiss jetzt nur nicht mit welchem Typ ich das Speichern kann. Wenn ihr nicht wisst was ich meine hilft euch vielleicht der Screenshot:

    Items in einer ComboBox sind Üblicherweise Objekte.

    Was kommt denn in den ComboBoxen rein ?
    Vermutlich Strings.

    Somit müsstest du in Settings auch als String deklarieren.
    Beim auslesen dann
    ComboBox1.SelectedItem.ToString

    Also eine Liste mit String.
    Also ich hab ne Text Box in die ich etwas reinschreiben kann und dann mit einem Button in die ComboBox einfügen.

    Für den Speicherbutton hab ich das als Code:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click My.Settings.Setting = ComboBox1.Items My.Settings.Save()
    2. End Sub


    Und das "ComboBox1.Items" ist dann blau unterstrichen. Da steht das das nicht in String konvertiert werden kann.
    ComboBox Item iste eigentlich noch nichts sagend.
    Du musst dann

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. My.Settings.Setting = ComboBox1.SelectedItem.ToString
    3. My.Settings.Save()
    4. End Sub

    Dann muss du aber in den Settings auch darauf achten, dass dort ein String deklariert ist.

    Wenn du Singel speichern möchtest
    In den Settings als Single deklarieren

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. My.Settings.Setting = CSng(ComboBox1.SelectedItem)
    3. My.Settings.Save()
    4. End Sub
    Irgendwas mach ich wohl falsch. Bei dem String hab ich genau das geschrieben, was du auch geschrieben hast, und dann kam ein fehler. Also der Fehler kam als ich dann auf den Speichern Button gedrückt hatte. Da steht: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

    Und noch ne Frage. Was muss ich dann als Lade Code nehmen? Also ich hatte das hier:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChangedComboBox1.Text = My.Settings.SettingEnd Sub



    Aber das is wohl auch falsch.

    VB.NET-Quellcode

    1. Option Infer On
    2. Option Strict On
    3. Public Class Form1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. ' Entweder String
    6. My.Settings.Mein_String = ComboBox1.SelectedItem.ToString
    7. ' Oder Singel
    8. My.Settings.Mein_Single = CSng(ComboBox1.SelectedItem)
    9. ' Oder Oder....
    10. ' Dann Speichern
    11. My.Settings.Save()
    12. End Sub
    13. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    14. ' In Form Load, oder wo du möchtest
    15. My.Settings.Reload()
    16. ' Dann den String zurück an die ComboBox
    17. ComboBox1.Items.Add(My.Settings.Mein_String)
    18. ' Oder dein Singel zurück an die ComboBoxd
    19. ComboBox1.Items.Add(CStr(My.Settings.Mein_Single))
    20. End Sub
    21. End Class


    Teste einfach mal Rum.
    Welcher fehler ?


    du versuchst vermutlich den Eintrag der ComboBox In deine Setting zu Speichern.

    Dort hast du aber einen Singel deklariert.

    Ein String aus der ComboBox passt nicht in Ein Singel rein.

    Schau dir mein Beispiel mal etwas genauer an
    Der Fehler beim drücken des Speichern Buttons: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

    Ne, ich hab bei "My Project" -> "Einstellungen" -> "Name: Setting" den Typ auf "String", den Bereich auf "Benutzer" und bei Wert hab ich garnix stehen.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ComboBox1.Items.Add(TextBox1.Text) End Sub
    3. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click My.Settings.Setting = ComboBox1.SelectedItem.ToString My.Settings.Save() End Sub
    4. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load My.Settings.Reload() ComboBox1.Items.Add(My.Settings.Setting) End SubEnd Class



    das ist der ganze Code

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „LetsHackMario“ ()

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. ComboBox1.Items.Add(TextBox1.Text)
    3. End Sub
    4. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    5. My.Settings.Setting = ComboBox1.SelectedItem.ToString
    6. My.Settings.Save()
    7. End Sub
    8. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    9. My.Settings.Reload()
    10. ComboBox1.Items.Add(My.Settings.Setting)
    11. End Sub


    Formatier mal deine TAG hier im Forum.

    Bei Button1 Setzt du den Text in die ComboBox
    Sieht gut aus

    Bei Button 2 holst du den Selected.Itdem direkt in die Setting
    Sieht eigentlich auch gut aus.

    In Form Load , das ganze anders rum.
    Sieht auch gut aus.


    - Jetzt solltest du kontrollieren ob in den Setting wirklich ein String deklariert ist
    - Ob wirklich in der ComboBox etwas Selectiert ist, bevor du Button 2 Clickst.
    - Vielleciht noch in My.Settings die Variable "Setting" Umbenennen . z.B. MeinWert oder MeineTextBox oder.....
    man kann in den Settings auch eine Stringcollection speichern - ist hier wohl angesagter als einen einzelnen String.

    VB.NET-Quellcode

    1. Public Class Form2
    2. Dim _Items As New BindingList(Of String)
    3. Private Sub TestToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) _
    4. Handles TestToolStripMenuItem.Click
    5. _Items.Add(TextBox1.Text)
    6. End Sub
    7. Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs) _
    8. Handles Me.FormClosed
    9. My.Settings.ComboItems.AddRange(_Items.ToArray)
    10. End Sub
    11. Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    12. For Each s In My.Settings.ComboItems
    13. _Items.Add(s)
    14. Next
    15. ListBox1.DataSource = _Items
    16. End Sub
    17. End Class
    Tücke: In den Settings muß man erstmal einen Eintrag in die Stringcollection einfügen.

    Und dann wieder löschen.

    Ansonsten ist der Setting-Wert nicht eine leere StringCollection, sondern Nothing.
    @Bernd: Ich glaube du hast was Falsch verstanden. Ich will das man mehrere Sachen einfügen kann und dann mit einem Klick speichern kann. Also das man z.B. "Käse" und "Wurst" einfügt und dann diese Speichert. Deswegen hatte ich da was mit "ComboBox1. Items"