TextBox.Text in ComboBox dauerhaft speichern - Problem

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von ChaosBernd.

    TextBox.Text in ComboBox dauerhaft speichern - Problem

    hallo,
    habe den Quellcode fürs das dauerhafte Speichern eines Textbox textes in einer Combobox gemacht, so, dass bei jeden Neustart des Programms die gespeicherten Einträge wieder in die Combobox geladen werden.

    Nun ist es aber so, dass in der Combobox immer ein Eintrag zwischen zwei Einträgen leer ist. Wie kann ich das unterdrücken?

    Vielen Dank schon einmal!!!

    Grüße, Ben
    Kannst du uns mal den Code zeigen, wie du das gamacht hast? Ich zumindest kanns nicht nachvollziehen, wie die leeren stellen erscheinen
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    Hi,
    danke schon einmal für die vielen Antworten, nur leider kann ich da nichts erkennen, was ich benutzen könnte... Ich speichere nämlich nichts in einer txt-datei...

    Hier mal mein Code:

    VB.NET-Quellcode

    1. Public Class form_myradio
    2. Private Sub startbt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startbt.Click
    3. radioplayer.URL = TextBox.Text
    4. End Sub
    5. Private Sub savebt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles savebt.Click
    6. If ComboBox.Items.Contains(TextBox.Text) Or Len(TextBox.Text) = 0 Then
    7. TextBox.Clear()
    8. Else
    9. ComboBox.Items.Add(TextBox.Text & ";")
    10. End If
    11. End Sub
    12. Private Sub form_myradio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. If My.Settings.ComboBox_Setting <> Nothing Then
    14. Dim v As Array = Split(My.Settings.ComboBox_Setting, ";")
    15. ComboBox.Items.AddRange(v)
    16. End If
    17. End Sub
    18. Private Sub form_myradio_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
    19. Dim items As String = Nothing
    20. For i As Long = 0 To ComboBox.Items.Count - 1
    21. If i = ComboBox.Items.Count - 1 Then
    22. items = items & ComboBox.Items.Item(i)
    23. Else
    24. items = items & ComboBox.Items.Item(i) & ";"
    25. End If
    26. Next
    27. My.Settings.ComboBox_Setting = items
    28. My.Settings.Save()
    29. End Sub
    30. Private Sub ComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox.SelectedIndexChanged
    31. TextBox.Text = ComboBox.SelectedItem
    32. End Sub
    33. Private Sub TextBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox.Click
    34. TextBox.Clear()
    35. End Sub
    36. End Class
    so wie ich das jetzt gesehen habe speicherst du komplette Arrays im My.Setting...
    Wie sind diesen denn deklariert ? kann man üerhaupt Array's in My.Settings... speichern ?


    ich denke eher nicht !?

    bernd

    Edit:
    hast du Option Strinct On angeschaltet ?

    ChaosBernd schrieb:

    so wie ich das jetzt gesehen habe speicherst du komplette Arrays im My.Setting...
    Wie sind diesen denn deklariert ? kann man üerhaupt Array's in My.Settings... speichern ?


    ich denke eher nicht !?

    bernd


    Hi,
    ist das rethorisch? Weil speichern kann ich es. Ich habe die Einträge in der Textbox, nur eben auch eine Leerzeite dazwischen.

    ChaosBernd schrieb:


    Edit:
    hast du Option Strinct On angeschaltet ?


    Was ist das? Ich habe leider eine Ahnung, wo und was es ist...

    Ben1988 schrieb:

    Wenn ich das rein schreibe: "Option Strinct On" gibts nen deklarationsfehler...

    genau darauf wollte ich hinaus.
    immer wenn My.Settings was nicht nimmt ist es meistens konvertierungs fehler

    erste Zeite in deinem Code
    Public Class....


    jetzt beseitige mal alle fehler, dannach gehen wird dein Ursprünlisches Problem an


    danke dir
    bernd
    Hi,
    okay, ich habe das "Option Strickt On" über die Public Class geschrieben.

    Jetzt bekomme ich viele andere Fehler:

    Fehler 1 "Option Strict On" lässt keine impliziten Konvertierungen von System.Array in 1-dimensionales Array von Object zu. C:\Users\Benjamin\Documents\Visual Studio 2008\Projects\MeinRadio\MeinRadio\Form1.vb 19 37 MeinRadio

    Fehler 2 "Option Strict On" lässt keine impliziten Konvertierungen von Long in Integer zu. C:\Users\Benjamin\Documents\Visual Studio 2008\Projects\MeinRadio\MeinRadio\Form1.vb 27 53 MeinRadio

    Fehler 3 "Option Strict On" lässt keine impliziten Konvertierungen von Long in Integer zu. C:\Users\Benjamin\Documents\Visual Studio 2008\Projects\MeinRadio\MeinRadio\Form1.vb 29 53 MeinRadio

    Fehler 4 "Option Strict On" lässt keine impliziten Konvertierungen von Object in String zu. C:\Users\Benjamin\Documents\Visual Studio 2008\Projects\MeinRadio\MeinRadio\Form1.vb 37 24 MeinRadio


    Ehrlich gesagt stellt das doch meinen ganzen Quellcode auf den Kopf oder? Ich habe leider nicht so viel Ahnung, dass ich jetzt wüsste, wie ich die Variablem umschreiben sollte....
    wenn ein fehler blau unterstrichen wird, ist ein kleiner Roter strich am ende der Linie zu sehen.
    Da fährst du mit der Maus drauf. Manchmal wird dir dann ein Korrekturvorschlag angezeigt.


    nun siehst du aber wenn man nicht sauber proggt, das es viele fehler mit sich bringt.
    mach also Option Strict On immer an. Das kannst du in den Einstellungen der IDE aber auch als Standt einstellen.

    ChaosBernd schrieb:

    jetzt beseitige mal alle fehler, dannach gehen wird dein Ursprünlisches Problem an



    sooo, jetzt habe ich hoffentlich alles berichtigt. Was macht den eigentlich der Option Strict On für einen Unterschied, denn eigentlich hat es ja auch vorher funktioniert?

    Mein Quellcode jetzt berichtigt:

    VB.NET-Quellcode

    1. Private Sub form_myradio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If My.Settings.ComboBox_Setting <> Nothing Then
    3. Dim v As Array = Split(My.Settings.ComboBox_Setting, ";")
    4. ComboBox.Items.AddRange(CType(v, Object()))
    5. End If
    6. End Sub
    7. Private Sub form_myradio_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
    8. Dim items As String = Nothing
    9. For i As Long = 0 To ComboBox.Items.Count - 1
    10. If i = ComboBox.Items.Count - 1 Then
    11. items = CStr(ComboBox.Items.Item(CInt(i)))
    12. Else
    13. items = CStr(ComboBox.Items.Item(CInt(i)))
    14. End If
    15. Next
    16. My.Settings.ComboBox_Setting = items
    17. My.Settings.Save()
    18. End Sub
    19. Private Sub ComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox.SelectedIndexChanged
    20. TextBox.Text = CStr(ComboBox.SelectedItem)
    21. End Sub
    Mhh, ja stimmt ist das selbe, habe ich gar nicht bemerkt. Ich habe nur jetzt das Problem, dass nichts mehr in die ComboBox geladen wird beim Neustart des programms...

    Habe es geändert in :

    VB.NET-Quellcode

    1. items = CStr(ComboBox.Items.Item(CInt(CInt(i) & ";")))

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

    Ben1988 schrieb:

    For i As Long = 0 To ComboBox.Items.Count - 1
    If i = ComboBox.Items.Count - 1 Then
    items = CStr(ComboBox.Items.Item(CInt(i)))
    Else
    items = CStr(ComboBox.Items.Item(CInt(i)))
    End If
    Next

    jetzt nehm die Innere Schleife mal raus und lass nur
    For i ...
    items ...
    Next...

    dann versuchst du es nochmal.

    danke
    bernd