none
Problem bei der Übertragung von ListBox-Items in eine Combobox RRS feed

  • Frage

  • Einen Guten Tag Euch,

    Ich habe folgendes Problem:

    Ich habe vor alle Elemente einer ListBox in eine ComboBox zu übertragen, allerdings entsteht dieser Fehler bei der Laufzeit:

    Die ListBox-Items erscheinen doppelt in der ComboBox!

    Ich verwende folgenden Code:

        Function liste()
            Dim alle_elemente As String = Nothing
            For Each elemente In ListBox1.Items
                alle_elemente += elemente.ToString + "!"
            Next
            Return alle_elemente
        End Function

    und zum Einfügen:

    For Each v In liste.ToString.Split("!")
        If v = Nothing Then
        Else
            ComboBox1.Items.Add(v)
        End If
    Next

    In anderen Übertragungen (z.B. ListBox-Einträge -> DataGridView-Spalten) funktioniert dieser Code fehlerfrei...

    Was ist falsch, wie geht's richtig?

    Danke schoneinmal!

    Montag, 16. September 2013 14:06

Antworten

  • Hallo,
    also bei mir funktioniert dein Code. Du kannst ja mal mittels F11 (Einzelschritt) durch den Code debuggen um zu sehen ob irgendetwas doppelt o.ä. ausgeführt wird. Was steht denn im Ergebnis von liste()?

    Allgemein würde ich es aber anders lösen, indem ich mit einer List(Of T) arbeite. Vor dem befüllen der ComboBox solltest dudiese vielleicht auch noch wieder entleeren, falls die Items mehrefach übertragen werden.

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ComboBox1.Items.Clear()
            For Each v In liste()
                If v = Nothing Then
                Else
                    ComboBox1.Items.Add(v)
                End If
            Next
        End Sub
    
        Function liste() As List(Of String)
            Dim alle_elemente As New List(Of String)
            For Each elemente In ListBox1.Items
                alle_elemente.Add(elemente.ToString)
            Next
            Return alle_elemente
        End Function
    außerdem Option Strict On, aber das ist nur eine Empfehlung.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 16. September 2013 14:41
    Moderator

Alle Antworten

  • Hallo,
    also bei mir funktioniert dein Code. Du kannst ja mal mittels F11 (Einzelschritt) durch den Code debuggen um zu sehen ob irgendetwas doppelt o.ä. ausgeführt wird. Was steht denn im Ergebnis von liste()?

    Allgemein würde ich es aber anders lösen, indem ich mit einer List(Of T) arbeite. Vor dem befüllen der ComboBox solltest dudiese vielleicht auch noch wieder entleeren, falls die Items mehrefach übertragen werden.

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ComboBox1.Items.Clear()
            For Each v In liste()
                If v = Nothing Then
                Else
                    ComboBox1.Items.Add(v)
                End If
            Next
        End Sub
    
        Function liste() As List(Of String)
            Dim alle_elemente As New List(Of String)
            For Each elemente In ListBox1.Items
                alle_elemente.Add(elemente.ToString)
            Next
            Return alle_elemente
        End Function
    außerdem Option Strict On, aber das ist nur eine Empfehlung.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 16. September 2013 14:41
    Moderator
  • Vielen Dank für die Antwort!

    Das vorangehende Leeren der ComboBox hat bereits gereicht, da mein Code ingesamt etw. komplizierter als geschildert ist (UserControl, zu Panel hinzufügen, Fensterübergreifend...)

    Gute Antwort!

    Montag, 16. September 2013 14:57