Laden...

ListView.FindItemWithText findet nur das erste Wort in einer Zeile/Spalte

Erstellt von Maylow2014 vor 3 Jahren Letzter Beitrag vor 3 Jahren 548 Views
M
Maylow2014 Themenstarter:in
1 Beiträge seit 2020
vor 3 Jahren
ListView.FindItemWithText findet nur das erste Wort in einer Zeile/Spalte

Hallo,

hoffe bin hier im richtigen Unterforum.

Habe ein ListView mit zwei Spalten, in denen soll über eine Textbox gesucht werden können, was auch funktioniert, nur dummerweise wird immer nur das erste Wort in einer Zeile/Spalte durchsucht bzw. gefunden.

Irgendwas mach ich falsch bzw. übersehe da was:


        private int NL_SIndex = 0;
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (listView1.Items.Count == 0) return;

            if (NL_SIndex == listView1.Items.Count)
            {
                MessageBox.Show("Keine weiteren Daten gefunden!", "Programm");
                NL_SIndex = 0;
            }

            ListViewItem foundItem = listView1.FindItemWithText(toolStripTextBox1.Text, true, NL_SIndex, true);
            if (foundItem != null)
            {
                listView1.TopItem = foundItem;
                foundItem.Selected = true;
                listView1.Select();
                NL_SIndex = foundItem.Index + 1;
            }
            else
            {
                if (NL_SIndex.Equals(0))
                    MessageBox.Show("Es wurden keine passenden Daten gefunden!", "Programm");
                else
                    MessageBox.Show("Keine weiteren Daten gefunden!", "Programm");
                NL_SIndex = 0;
            }
        }

Jemand eine Idee?

4.931 Beiträge seit 2008
vor 3 Jahren

Hallo und willkommen,

dann lies dir mal die Doku zu ListView.FindItemWithText durch:

Sucht das erste ListViewItem, das mit dem angegebenen Textwert beginnt.

😉

Du müßtest wohl dann selber eine Suchmethode schreiben, auf Grundlage von String.Contains(), z.B. per Linq


ListViewItem item = listView1.Items.Cast<ListViewItem>().FirstOrDefault(x=>x.Text.Contains(text));

Edit: Für Suche in allen Spalten müßtest du dies noch entsprechend erweitern.