ListView Item suchen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von xcout.

    ListView Item suchen

    Ich möchte eigentlich nur die Items in der ersten spalte durchsuchen also der ersten Column...
    Habe eine textbox und einen button, das wort was ich in der textbox suche, soll dann wenn es gefunden wird mit "xx ist an stelle xx" wiedergegeben werden...
    Ich hatte mal diesen Code:

    VB.NET-Quellcode

    1.   For i = 1 To ListView1.Items.Count
    2.   If StrComp(ListView1.Items(i).Text, TextBox12.Text, vbTextCompare) = 0 Then
    3.   Call MsgBox(TextBox12.Text & " ist an der Stelle " & i & " in der Liste *Internet*.", vbInformation, "Ergebnis gefunden!")
    4.   Else
    5.   End If
    6.   Next i

    Aber da kriege ich immer:
    ArgumentOutOfRangeExeption - InvalidArgument=Value mit dem Wert 1 ist für index ungültig. Parametername: index
    Ich habe natürlich die SuFu schon genutzt aber ich habe es mit den Beispielen leider noch nicht geschafft.
    Gruß
    Geht auch nicht der sagt immer die Zahl wieviele Items drin sind passt net zum Index, also eben hatte ich 5 LV Einträge und dann kam halt wieder:
    InvalidArgument=Value mit dem Wert 5 ist für index ungültig. Parametername: index
    Wie gesagt -1 am Ende....

    VB.NET-Quellcode

    1. For i = 0 To ListView1.Items.Count -1


    Ist ja wie gesagt NULLBASIERT. Also ist 0 das 1. Item und daraus lässt sich schließen, das 5 das 6. Item ist, das aber nicht existiert. Daher kommt es zur Exception...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „kevin89“ ()

    Danke schonmal ein Problem gibts aber noch....
    in dem LV stehen sagen wir mal 8 Einträge:
    a
    b
    c
    d
    e
    f
    g
    a
    Wenn ich jetzt nach "a" suche sagt er mir : A ist an stelle 0 und an stelle 7 also das ist noch verschoben er sieht 1 als 0, wie kann ich das noch ändern?
    Alles kla, danke Kevin.
    Hab einfach:

    VB.NET-Quellcode

    1. Call MsgBox(TextBox12.Text & " ist an der Stelle " & i + 1 & " in der Liste *Internet*.", vbInformation, "Ergebnis gefunden!")

    gemacht.
    Eine frage hab ich noch, den Code finde ich eigentlich schöner:

    VB.NET-Quellcode

    1. Dim vitem As ListViewItem = ListView1.FindItemWithText(TextBox12.Text, True, 0)
    2.  ListView1.Select()
    3.   ListView1.SelectedIndices.Clear()
    4.   vitem.Selected = True

    Weil er halt alles durchsucht, aber wie kriege ich den in eine If schleife, weil momentan hört er wenn er "a" in der ersten Zeile schon gefunden hat halt auf, aber er soll ja alle Zeilen durchsuchen und dann auch alle markieren.
    Hm du könntest das schon in eine Schleife bekommen, das würde dann aber auf´s selbe rauskommen. Normalerweise würde ich dir zu "Find" raten, das dir normalerweise eine Auflistung aller Treffer liefern sollte, aber ich habe es gerade mal ausprobiert und es liefert bei mir immer 0. Von daher, mach es so:

    VB.NET-Quellcode

    1. For Each item As ListViewItem In ListView1.Items
    2. If String.Compare(item.Text, "bla") = 0 Then
    3. MsgBox("Das Item ""bla"" wurde an Position " & item.Index & " gefunden!")
    4. End If
    5. Next
    Vielen Dank Kevin :), hast mir sehr geholfen!
    Mein Code ist jetzt:

    VB.NET-Quellcode

    1.   If RadioButton17.Checked = True Then
    2.   For Each item As ListViewItem In ListView1.Items
    3.   If String.Compare(item.Text, TextBox12.Text) = 0 Then
    4.   MsgBox(TextBox12.Text & " ist an der Stelle " & item.Index + 1 & " in der Liste *Internet* und wurde für Sie markiert!", vbInformation, "Ergebnis gefunden!")
    5.   ListView1.Select()
    6.   item.Selected = True
    7.   Else
    8.   End If
    9.   Next
    10.   End If

    Eine Frage noch, also es ist jetzt nicht möglich, das wir in die Schleife:

    VB.NET-Quellcode

    1. Dim vitem As ListViewItem = ListView1.FindItemWithText(TextBox12.Text, True, 0)

    einbauen mit er alles durchsucht?