Я написал метод для поиска в ListView заданной строки и пометил найденные строки с помощью Color
.Однако он работает нормально, с большим количеством информации на экране и прокручиваемым ListView, иногда бывает трудно найти то, что ищет пользователь.
Обычно я создаю special
поиски, изменяя метод и предложение SQL-запроса WHERE
, но это всегда сложно и требует больше работы / кода для каждого ListView / Data.
Мне бы хотелось иметь обобщенный поиск, который бы работал для всех видов поиска в ListView, точно так же, как у меня сейчас, но с возможностью скрывать (строки) то, что не нужно, и показывать только необходимые строки.Конечно, если кто-то передумает, он должен вернуть старые строки обратно.
Думаю, самая большая проблема для меня - как сохранить все столбцы и данные, не усложняя, зная, что это может быть от 3 до 20+ столбцов и несколько строк.
public static void wyszukajNazweListView(ListView varListView, string varWyszukaj) {
if (varWyszukaj != "") {
foreach (ListViewItem comp in varListView.Items) {
comp.UseItemStyleForSubItems = false;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
string textToAdd2 = drv.Text;
if (textToAdd2.Length >= 1) {
if (textToAdd2.ToLower().Contains(varWyszukaj.ToLower())) {
drv.BackColor = Color.DarkOrange;
} else {
drv.BackColor = Color.White;
}
}
}
bool varColor = false;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
if (drv.BackColor == Color.DarkOrange) {
varColor = true;
break;
}
}
if (varListView.SmallImageList != null) {
if (varColor) {
comp.ImageIndex = 2;
} else {
comp.ImageIndex = -1;
}
}
}
} else {
foreach (ListViewItem comp in varListView.Items) {
comp.UseItemStyleForSubItems = false;
comp.BackColor = Color.White;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
drv.BackColor = Color.White;
comp.ImageIndex = -1;
}
}
}
}