Listboxen Vergleichen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RoulettePilot.

    Listboxen Vergleichen

    Hi,

    ich habe ein Problem.
    Nach intensievem Googeln und probieren, bekomme ich es einfach nicht gebacken.

    Mein Anliegen: Ich habe 2 Listboxen in meiner Form.
    Beide werden von Timern angesteuert, wobei Timer 1 Listbox1 immer auf dem neusten Stand der Dinge hält,
    und Timer2, die erste Listbox dauerhaft fragt ob eines der Items aus Listbox2 vorhanden ist.

    Aktuell habe ich folgenden Code (den ich übrigens ähnlich Google habe, und als der nicht ging, habe ich herumprobiert):

    Quellcode

    1. For Each i As String In ListBox1.Items
    2. If i = ListBox2.GetItemText(ListBox2.Items) Then
    3. MsgBox("Item ist vorhanden")
    4. Timer2.Stop()
    5. End If
    6. Next


    Leider verrät mir der gute nicht ob das Item nun da ist oder nicht.
    Ich habe das Gefühl das der Lösungsweg nahe ist.

    Kann mir da irgendjemand helfen?

    Mfg
    Willkommen im Forum. :thumbup:

    Bazz_MuTTanTT schrieb:

    Leider verrät mir der gute nicht ob das Item nun da ist oder nicht.
    Arbeite mit Daten, nicht aber mit Controls. Pack Deine Strings in eine List(Of String), die kannst Du per AddRange(...) an ein Darstellungscontrol heften. Außerdem hat sie eine Methode Contains(...), die sagt Dir, ob da was da ist oder nicht. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Bazz_MuTTanTT schrieb:

    schlimm
    Warum fragst Du nicht einfach? :D
    Sieh Dir mal diesen Code an:

    VB.NET-Quellcode

    1. Dim l1 = New List(Of String) From {"aa", "bb", "cc"} ' Daten für Deine 1. Listbox
    2. Dim l2 = New List(Of String) From {"bb"} ' Daten für Deine 2. Listbox
    3. Me.ListBox1.Items.AddRange(l1.ToArray) ' den Listboxen zuordnen
    4. Me.ListBox2.Items.AddRange(l2.ToArray)
    5. For Each item In l2 ' Deine Testschleife
    6. If l1.Contains(item) Then
    7. MessageBox.Show(item)
    8. End If
    9. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hmmm irgentwas läuft da schief..

    Der Code fügt der zweiten Listbox ja neue Items zu.
    Die Aufgabe soll allerdings sein, dass er nur überprüft ob die Items aus lb2 in lb1 verfügbar sind.

    Auf diese Art und weise fügt er ja im Takt des Timers immer wieder "bb" ein.


    Ich kann mir nur gerade keinen Reim darauf machen wie ich Ihn am dümmsten umschreibe, weil ich in VB echt mega eingerostet bin :D

    Bazz_MuTTanTT schrieb:

    fügt er ja im Takt
    Du hast eine GUI-freie Problemlösung bekommen, die Du natürlich für Deinen Verwendungszweck anpassen musst.
    Verzichte auf den Timer uind mach den Vergleich, wenn sich Daten ändern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!