2 Listboxen vergleichen

    • VB.NET

    Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Scream.

      2 Listboxen vergleichen

      Da die meisten Anfänger gefragt haben wie man 2 Listboxen vergleichen kann hab ich mal dieses Tutorial zusammen gestellt ;)

      Was man braucht:
      1x Listbox (Zum vergleichen siehe Anhang: listbox1) *
      1x Listbox (Zum vergleichen siehe Anhang: listbox2) *
      1x Listbox (Ausgabe von vorhandenen Einträgen(kann auch in einem label ausgegeben werden) siehe Anhang: listbox3) *#
      1x Listbox (Ausgabe von nicht vorhandenen Einträgen(kann auch in einem label ausgegeben werden) siehe Anhang: listbox4) *#
      1x Button (zum überprüfen der Listboxen(kann auch beim Form_Load_event überprüft werden deshalb #*) siehe Anhang: butt3) #*
      1x Button (Zum Listbox-Items hinzufügen siehe Anhang: butt1) #*
      1x Button (Zum Listbox-Items hinzufügen siehe Anhang: butt2) #*

      Legende: * = muss vorhanden sein # = muss nicht vorhanden sein #* = kann dabei sein muss aber nicht

      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
      3. 'Für jedes listboxitem in listboxiems
      4. 'überprüfen ob es in der listbox2
      5. 'vorhanden ist
      6. For Each s As String In ListBox1.Items
      7. If ListBox2.Items.Contains(s) Then
      8. 'wen ja, dan in listbox3
      9. 'hinzufügen()
      10. ListBox3.Items.Add(s)
      11. Else
      12. 'wen nein, in listbox4
      13. 'hinzufpgen
      14. ListBox4.Items.Add(s)
      15. End If
      16. Next
      17. End Sub
      18. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      19. 'Das ist nun optional da man schon
      20. 'davor items in die listboxen
      21. 'hinzufügen konnte
      22. ListBox1.Items.Add(TextBox1.Text)
      23. End Sub
      24. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
      25. 'Das ist nun optional da man schon
      26. 'davor items in die listboxen
      27. 'hinzufügen konnte
      28. ListBox2.Items.Add(TextBox2.Text)
      29. End Sub
      30. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      31. End Sub
      32. End Class


      Anhang:



      Greetz Scream ;)
      Und jetzt das ganze als Einzeiler ... ;)

      VB.NET-Quellcode

      1. Private Function CompareListboxes(ByVal l1 As ListBox, ByVal l2 As ListBox) As Array
      2. Return (From l In l1.Items Join m In l2.Items On l Equals m Select l).ToArray
      3. End Function


      Bsp.:

      VB.NET-Quellcode

      1. Dim l1 As New ListBox
      2. l1.Items.Add("A")
      3. l1.Items.Add("B")
      4. Dim l2 As New ListBox
      5. l2.Items.Add("B")
      6. l2.Items.Add("C")
      7. Dim a() As Object = CompareListboxes(l1, l2)


      Nachtrach: Und so wenn man etwas flexibler auswählen will:

      VB.NET-Quellcode

      1. Private Enum SelectionCriteria
      2. IsInBoth
      3. IsInFirstOnly
      4. IsInSecondOnly
      5. End Enum
      6. Private Function CompareListboxes(ByVal l1 As ListBox, ByVal l2 As ListBox, ByVal sel As SelectionCriteria) As Array
      7. Select Case sel
      8. Case SelectionCriteria.IsInBoth
      9. Return (From l In l1.Items Join m In l2.Items On l Equals m Select l).ToArray
      10. Case SelectionCriteria.IsInFirstOnly
      11. Return (From l In l1.Items Where Not (From m In l2.Items Select m).Contains(l) Select l).ToArray
      12. Case SelectionCriteria.IsInSecondOnly
      13. Return (From l In l2.Items Where Not (From m In l1.Items Select m).Contains(l) Select l).ToArray
      14. Case Else
      15. Return Nothing
      16. End Select
      17. End Function

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