Mit der Suche ListView für die Unterpositionen passenden string
Ich habe Probleme beim Scannen über ein ListView zu suchen, ein Unterelement, die mit einem bestimmten string. Hier ist mein code:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
string date = datePicker.Value.ToShortDateString();
int count = Program.booker.listView.Items.Count;
for (int i = 0; i < count; i++)
{
ListViewItem lvi = Program.booker.listView.Items[i];
if (lvi.SubItems.Equals(date))
{
MessageBox.Show("Found!", "Alert");
Program.booker.listView.MultiSelect = true;
Program.booker.listView.Items[i].Selected = true;
}
else
{
MessageBox.Show("Nothing found for " + date, "Alert");
}
}
}
Die ListView liegt auf der Booker-form, und ich bin der Zugriff über den Filter Klasse. Ich möchte die Suche in der gesamten ListView für alle Elemente, die passend zu meiner Datums-Zeichenfolge. Danke!
- Ist das WPF oder Winforms? Auch, was ist falsch mit Ihrem aktuellen code, ohne den es nicht funktionieren, werfen Fehler?
- Winforms. Und mein code will einfach nicht funktionieren. Es durchsucht nur die erste Spalte meiner ListView, und nicht die sub-Elemente zu.
- Sollten Sie nicht in einer Schleife durch Ihre
SubItems
für jedes Element aus und überprüfen Sie alle von Ihnen? Ich denkelvi.SubItems.Equals(date)
ist, der versucht, einen Zeiger auf eine Sammlung mit einem Datum, das wäre immer falsch. Vielleicht ändernEquals
zuContains
? - Ich bin auf der Suche nach einer Zeichenfolge, und
Contains
nimmt in einemSubItem
als parameter. - Haben Sie versucht, Ihren Zustand zu
lvi.SubItems.Any(item => item.Equals(date))
? Nachdem alle, du bist gefragt, wenn eine der sub-Elemente sind gleich das Datum nicht, wenn der sub-Elemente (als Sammlung) ist gleich dem Datum.
InformationsquelleAutor Ryan Cohen | 2013-07-31
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die FindItemWithText Methode.
FindItemWithText
Methode wird nur das erste Ergebnis erhalten. Was Sie tun können, ist diese überlastung in einer Schleife, die Aktualisierung derstartIndex
nach einer gefunden wird. Ich habe aktualisiert die Antwort, aber der code ist ungetestet (Eingabe direkt in das SO), sollte aber hoffentlich Ihnen eine Idee geben, obwohl.searchitem
wird nicht null, sobald es findet die erste Instanz der zu finden.index + 1
.Value of '2' is not valid for 'startIndex'
Count
- Eigenschaft (siehe Antwort) als Indizes sind 0-basiert.Count -1
macht -1, was ungültig ist. Siehe neues update (wieder!!! lol)subitems
Eigentum nicht zurückListViewItem
also habe ich versucht Rechnung zu.