Prüfen ob ListView Item bereits vorhanden ist

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Manschula.

    Prüfen ob ListView Item bereits vorhanden ist

    Hallo,
    auf meiner Form wird im Load Ereignis ein Eintrag in einer ListView gemacht. D.h. wenn ich die Form später nochmal öffne, wird der gleiche Eintrag nochmal eingefügt. Wie kann ich überprüfen ob der Eintrag bereits vorhanden ist? Wenn ja, dann nichts machen, wenn nein, dann Item eintragen.
    Das habe ich jetzt einmal so frei geschrieben. Also nicht so genau nehmen.

    VB.NET-Quellcode

    1. Dim NeuesItem As String = "123"
    2. For Each Item As String In Liste
    3. If Item = NeuesItem Then
    4. Exit Sub
    5. End If
    6. Next
    7. Liste.Add(NeuesItem)
    OK Danke. Werde es mal versuchen
    Edit: Also, hab da leider ein Problem -.- In der Zeile For each item as String in ListView1 kommt folgender Fehler: Der Ausdruck ist vom Typ "System.Windows.Forms.ListView" und ist keine Auflistung. Und ich weiß nicht was ich da noch hinschreiben soll. Wenn ich ListView1.Items benutze, dann kommt folgender Fehler: Ungültige Konvertierung von Typ ListViewItem in Typ String. Und wenn ich ListView1.Items.ToString benutze, dann kann ich das Item endlos weiter einfügen..wie ist denn der Begriff für diese "Auflistung"?

    Edit2: Also ich kapier das nicht. Eig müsste das hier doch klappen:

    VB.NET-Quellcode

    1. If ListView1.Items.ContainsKey("hallo") Then
    2. ListView1.Items.Add("tschüss")
    3. Else
    4. ListView1.Items.Add("wiedersehen")
    5. End If


    Dieser Code prüft doch ob es ein Item mit dem Text "hallo" gibt. Wenn ja dann soll das "tschüss"-Item eingefügt werden, wenn nicht dann "wiedersehen". Beim Versuchen wird immer "wiedersehen" eingefügt..egal ob es hallo gibt oder nicht, warum?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Cr4ckY“ ()

    Hey,

    die einfachste Möglichkeit besteht in meinen Augen aus einer Schleife. Jedes einzelne Item wird überprüft und falls identisch, wird eine Meldung ausgegeben. Wichtig ist allerdings, ob man nur die erste Spalte überprüfen will, oder ob alle vorhandenen Spalten (.Subitems) überprüft werden sollen. Soll dies der Fall sein, muss man seine Schleife etwas ausbauen.

    Ich habe Dir ein kleines Beispiel geschrieben, welches Dir eine Möglichkeit aufzeigt, wie Du alle Einträge inklusive Subitems überprüfen kannst. Der Code ist extra etwas ausführlicher, damit Du alle Schritte verstehen kannst. Natürlich geht es auch kleiner und feiner, aber ich glaube, dass der Lerneffekt dadurch nicht größer wird.

    VB.NET-Quellcode

    1. ' "item_neu" enthält den Text für das neue Item; nach diesem Item wird gesucht
    2. ' treffer = true, falls "item_neu" schon vorhanden ist; "false", falls nicht vorhanden
    3. Dim item_neu As String = "thilo"
    4. Dim treffer As Boolean = False
    5. ' Jede Zeile der Listview durchgehen
    6. ' "0" = erste Zeile
    7. ' "Listview1.Items.Count -1" = letzte Zeile
    8. For i As Integer = 0 To ListView1.Items.Count - 1
    9. ' Erste Zelle überprüfen
    10. If ListView1.Items.Item(i).Text = item_neu Then
    11. ' Treffer: "treffer = true"
    12. treffer = True
    13. Else
    14. ' Erste Zelle kein Treffer; die nächsten Zellen (Subitems) überprüfen
    15. ' dazu jedes SubItem einzeln durchgehen
    16. For Each sub_item As ListViewItem.ListViewSubItem In ListView1.Items.Item(i).SubItems
    17. If sub_item.Text = item_neu Then
    18. ' Treffer: "treffer = true"
    19. treffer = True
    20. End If
    21. Next
    22. End If
    23. Next
    24. ' Falls der Eintrag bereits vorhanden ist,
    25. ' ist "treffer" = true => Meldung ausgeben
    26. If treffer = True Then
    27. MsgBox("Eintrag bereits vorhanden")
    28. Else
    29. ' kein Treffer; Eintrag hinzufügen
    30. ListView1.Items.Add(item_neu)
    31. End If

    Wichtig ist, dass Du versuchst, die einzelnen Schritte zu verstehen. Dann kannst Du den Code auch weiter ausbauen, verfeinern, anpassen... und hast etwas gelernt.

    Gruß, Manschula