Я пытаюсь сделать окно поиска для моей ListView, и мне удалось сделать алгоритм, который работает, но не идеально:элементы Поиск ListView с помощью текстового поля
if (!string.IsNullOrWhiteSpace(searchBox.Text))
{
foreach (ListViewItem item in textureViewer.Items)
{
if (!item.Text.ToLower().Contains(searchBox.Text.ToLower()))
textureViewer.Items.Remove(item);
}
if (textureViewer.SelectedItems.Count == 1)
{
textureViewer.Focus();
}
}
else
LoadTextures();
До сих пор он работает, я могу найти и они отображаются хорошо, но, например, если я ищу «sword_diamond», а затем удаляю «_diamond», так что теперь у меня в моем поискеБокс только «меч», он не покажет мне все текстуры «меч», потому что у меня есть уже удалили их из моего списка, поэтому мне придется удалить все из поиска, чтобы он обновился. Я хотел попытаться скрыть элементы, сохранить информацию о том, какие элементы спрятаны, и на каждом шаге, когда письмо удаляется, чтобы они отображались. К сожалению, item.Visible недоступен для меня, и я не думаю, что это был бы хороший алгоритм.
Вы можете мне помочь? Благодаря
Каков исходный источник данных? Вы удаляете элементы из списка ListView для удаления элементов, которые не соответствуют поиску? –
Да, я удаляю элементы, которые не совпадают с поиском. Мои элементы сделаны из изображения и имени, все изображения хранятся в ImageList –
Но каков исходный источник данных? Это из файла? или базы данных? Или это данные в памяти, которые пользователь только что ввел? –