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?
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.