Listbox suchen + weitersuchen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Sub7evenHH.

    Listbox suchen + weitersuchen

    Hi,

    ich habe leider noch immer Probleme beim durchsuchen einer Listbox. Ich schaffe es zwar einen Wert zu suchen, kann aber wenn mehrere Treffer sind nicht zum nächsten Treffer springen.

    Könnt Ihr mir vielleicht etwas helfen?

    Derzeit sieht es so aus:

    VB.NET-Quellcode

    1. For i As Integer = 0 To Listbox1.Items.Count
    2. If Not Listbox1.Items(i).ToString.Contains(Textbox1.Text) Then
    3. Listbox1.SetSelected(i, True)
    4. End If
    5. Next


    Ich möchte nun sobald es mehrere Treffer gibt eine MsgBox mit dem Stil "Weiteren Treffer anzeigen?" Ja/Nein

    Danke bereits jetzt :)
    @Sub7evenHH Meinst Du so was:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim start As Integer = 0
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. For i As Integer = start To ListBox1.Items.Count - 1
    5. If ListBox1.Items(i).ToString.Contains(TextBox1.Text) Then
    6. ListBox1.SetSelected(i, True)
    7. start = i + 1
    8. Return
    9. End If
    10. Next
    11. MessageBox.Show("Durch")
    12. End Sub
    13. End Class
    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!
    Hi,

    danke für die schnelle Antwort :)

    Leider funktioniert der Code nicht. Wenn ich ihn so übernehme, passiert beim klick leider nichts.

    Angenommen meine Listbox hat die Inhalte:

    AAA
    BBB
    CCC
    AAA
    DDD

    Wenn ich nun in der Textbox1 den Wert AAA eingebe, möchte ich dass er den ersten Eintrag mit AAA markiert und dann fragt wenn es weitere gibt "Nächsten Eintrag anzeigen?" Wenn ich dann auf ja klicke, soll der nächste Eintrag mit AAA markiert werden.

    Ich freue mich dass du mir so schnell versuchst zu helfen :)

    Vollzitate entfernt. ~Thunderbolt

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

    Sub7evenHH schrieb:

    Leider funktioniert der Code nicht. Wenn ich ihn so übernehme, passiert beim klick leider nichts.
    Wenn ich ihn so übernehme, passiert bei mir deutlich mehr als nix.

    Sub7evenHH schrieb:

    Wenn ich nun in der Textbox1 den Wert AAA eingebe, möchte ich dass er den ersten Eintrag mit AAA markiert
    Ja gut. Auf den Button muss man schon drücken. Das Eingeben des Textes in die TextBox reicht da nicht:

    Was ist also das tatsächliche Problem? Dass Deine Abfrage-MessageBox noch nicht dabei ist? An RfGs Code liegt's jedenfalls nicht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Sub7evenHH schrieb:

    "Nächsten Eintrag anzeigen?"
    Leider hast Du vergessen, dies in Deinem Eröffnungspost zu schreiben.
    Da meine Glaskugel abhanden gekommen ist, Meine Glaskugel ist weg
    habe ich mir erlaubt, eine funktionierende Lösung zu präsentieren, die ohne diesen Text auskam.
    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!

    Sub7evenHH schrieb:

    Hi,

    ... zum nächsten Treffer springen.
    ...

    VB.NET-Quellcode

    1. For i As Integer = 0 To Listbox1.Items.Count
    2. If Not Listbox1.Items(i).ToString.Contains(Textbox1.Text) Then
    3. Listbox1.SetSelected(i, True)
    4. End If
    5. Next


    Ich möchte nun sobald es mehrere Treffer gibt eine MsgBox mit dem Stil "Weiteren Treffer anzeigen?" Ja/Nein

    Danke bereits jetzt :)


    Dort habe ich doch eigentlich erwähnt wie ich es versuche hinzubekommen?

    RodFromGermany schrieb:

    Sub7evenHH schrieb:

    "Nächsten Eintrag anzeigen?"
    Leider hast Du vergessen, dies in Deinem Eröffnungspost zu schreiben.
    Da meine Glaskugel abhanden gekommen ist, Meine Glaskugel ist weg
    habe ich mir erlaubt, eine funktionierende Lösung zu präsentieren, die ohne diesen Text auskam.


    Hi, Danke für Eure Antworten. Ich habe den Code nochmal ausprobiert (mit Klick auf den Button natürlich) und ich komme nicht zum gewünschten Ergebnis wie im Eröffnungspost geschrieben.

    Ich werde wohl selbst ein wenig rumprobieren müssen. Trotzdem Danke für Eure Hilfe :)
    Hast du hier fertigen Code erwartet? Ein bisschen Eigeninitiative wird schon erwartet. Mit dem Snippet von @RodFromGermany solltest Du das hinbekommen.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    VB.NET-Quellcode

    1. Private _Data As String() = "AAA BBB CCC AAA DDD AAA BBB CCC AAA DDD ".Split
    2. Public Sub New()
    3. InitializeComponent()
    4. ListBox1.DataSource = _Data
    5. End Sub
    6. Private Sub SearchListbox(pattern$)
    7. Dim matches = Enumerable.Range(0, _Data.Length - 1).Where(Function(i) _Data(i).IndexOf(pattern, StringComparison.OrdinalIgnoreCase) >= 0).ToArray
    8. If matches.Length = 0 Then MessageBox.Show("kein Match gefunden") : Return
    9. For i = 0 To matches.Length - 1
    10. ListBox1.SelectedIndex = matches(i)
    11. If MessageBox.Show("Weiter suchen?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then Return
    12. Next
    13. MessageBox.Show("keine weiteren Matches")
    14. End Sub
    15. Private Sub Test()
    16. SearchListbox(TextBox1.Text)
    17. End Sub

    Sub7evenHH schrieb:

    ich komme nicht zum gewünschten Ergebnis wie im Eröffnungspost geschrieben.
    Worin besteht der Unterschiewd zwischen meinem Post und Deinem Wunsch?
    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!