Suchen UND Weitersuchen in ListView

  • VB.NET

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

    Suchen UND Weitersuchen in ListView

    Hallo Zusammen!

    da kommt bridritte mit seinem ListView wieder!

    hiermit suche ich etwas aus dem ListView:

    VB.NET-Quellcode

    1. Dim NumGefZeileLV As Integer
    2. Private Sub ListView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    3. If Me.ListView1.SelectedIndices.Count <= 0 Then
    4. Return
    5. End If
    6. NumGefZeileLV = Me.ListView1.SelectedIndices(0)
    7. End Sub
    8. Private Sub SuchenBegriffEingabe_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles SuchenBegriffEingabe.KeyDown
    9. If e.KeyCode = 13 Then
    10. Dim foundItem As ListViewItem = ListView1.FindItemWithText(SuchenBegriffEingabe.Text, False, 0, True)
    11. If (foundItem IsNot Nothing) Then
    12. Me.ListView1.FindItemWithText(SuchenBegriffEingabe.Text).Selected = True
    13. ListView1.TopItem = foundItem
    14. End If
    15. ElseIf e.KeyCode = 27 Then
    16. SuchenBegriffEingabe.Text = ""
    17. End If
    18. End Sub

    jetzt möchte ich den selben SuchBegriff ab der gefunden Zeile durch die Liste weitersuchen (den GefundeZeileIndex kenne ich: zwar "NumGefZeileLV" aus dem "ListView1_SelectedIndexChanged").
    z. B. ich habe folgendes gelistet: Zeile 24 Gelbe Pfirsich - Zeile 142 Weinberg-Pfirsich - Zeile 653 Weiße Pfirsich. Bei ersten Versuch (SuchenBegriffEingabe "Pfirsich" + Enter-Drücken) komme ich an der Zeile 24.
    Dann brauche ich einen "Weitersuchen-Button", das ab der Zeile 25 weitersucht u.s.w.
    Was soll ich zu dem "Weitersuchen-Button" sagen, sodaß es mich glücklich bzw. fündig macht?
    Dank Euch fürs Helfen! :love:
    mfG

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

    Hi bridritte,

    ja, und ich kann dir wieder eine Lösung zeigen ^^

    VB.NET-Quellcode

    1. ListView1.FindItemWithText(SuchenBegriffEingabe.Text,False,ListView1.SelectedIndices(0) + 1)


    Damit findest du das nächste Item. Übrigens, das False bestimmt, damit keine Unteritems mit beim Suchen einbezogen werden, das hättest du vielleicht auch bei deinem einem Thema brauchen können :whistling:

    vG,
    Lupus

    fürs Weitersuchen weitersuchen!

    @lupus

    Hallo lupus!

    leider geht es nicht: meine Markierung bleibt stehen und geht nicht zum nächsten Suche (es gibt kein Weinende Smiley!)

    Es wäre ganz lieb von Dir, wenn weiter überlegen könntest.

    Danke nö vielen Dank für Deine Mühe :thumbup:

    mfG

    Eberbach? neben Neckargemünd?
    Hi bridritte,

    hab jetzt mal selbst ein bisschen ausprobiert und folgenden Code erstellt. Hab einen Button verwendet, der sucht und weitersucht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim foundItem As ListViewItem = Nothing
    3. If ListView1.SelectedIndices.Count > 0 Then
    4. foundItem = ListView1.FindItemWithText(SuchenBegriffEingabe.Text, False, ListView1.SelectedIndices(0) + 1)
    5. Else
    6. foundItem = ListView1.FindItemWithText(SuchenBegriffEingabe.Text, False, 0)
    7. End If
    8. If foundItem IsNot Nothing Then
    9. ListView1.SelectedIndices.Add(foundItem.Index)
    10. ListView1.TopItem = foundItem
    11. Else
    12. MessageBox.Show("Keinen weiteren Eintrag gefunden!")
    13. End If
    14. End Sub


    Ja genau das Eberbach ;)

    vG,
    Lupus
    @lupus, der trotz Fußbal gestern spät Abend noch da war (für Späterleser hat D gestern das Euro2008-Finale durch Gewinn gegen Türkei 3-2 erreicht!)

    Guten Morgen lupus!

    es klappt genau wie ich es wollte, wahrscheinlich hat das "Dim foundItem As ListViewItem = Nothing" dabei geholfen.

    Auf jeden Fall "Chapeau Monsieur lupus!" (wie die Franzosen dazu sagen würden [Hut ab!]). :thumbsup:

    Noch Mal vielen, vielen, vielen Dank!

    mfG aus HD(Kreis)

    bridritte

    gelöst ja aber

    @lupus

    Hi lupus!

    ich bleibe beim Loben von heute Morgen früh fest, aber ich habe noch was dazu gefunden:

    wenn ich nach "Pfirsich" suche, bekomme ich alle Zeile die mit "Pfirsich" anfangen: PfirsichA PfirsichB PfirsichC usw. aber dabei nicht Roulade mit Pfirsich oder SonderPfirsichDessert oder TitanPfirsich. Hat es mit der Stellung von diesen Items weiter weg vom lätzten Fund zu tun?

    Gibt die Möglichkeit zu suchen mit Contains oder Instr() oder eben mit was ich nicht weisse :?:

    bis später, hoffentlich!

    vG
    Hi bridritte,

    soo hab mich ma drangesetzt (hatte nen bisschen Zeit ^^) und das ist dabei rausgekommen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim foundItem As ListViewItem = Nothing
    3. Dim Start As Integer = 0
    4. If ListView1.SelectedIndices.Count > 0 Then
    5. Start = ListView1.SelectedIndices(0) + 1
    6. End If
    7. If Not Start = ListView1.Items.Count Then
    8. For a As Integer = Start To ListView1.Items.Count - 1
    9. If ListView1.Items(a).Text.Contains(SuchenBegriffEingabe.Text) Then
    10. foundItem = ListView1.Items(a)
    11. Exit For
    12. End If
    13. Next
    14. End If
    15. If foundItem IsNot Nothing Then
    16. ListView1.SelectedIndices.Add(foundItem.Index)
    17. ListView1.TopItem = foundItem
    18. Else
    19. MessageBox.Show("Keinen weiteren Eintrag gefunden!")
    20. End If
    21. End Sub

    Hoffe du verstehst es und es hilft dir weiter!

    vG,
    Lupus