2016-06-28 3 views
-1

У меня возникли проблемы с выполнением поиска в ListView при использовании VirtualMode. ListView заполняет только найти, используя событие RetrieveVirtualItem.Поиск ListViewItem в VirtualMode

У меня есть текстовое поле и кнопка «Поиск» на моей форме.

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    listViewFields.FindItemWithText(txtSearch.Text); 
} 

я обработал событие SearchForVirtualItem, который выглядит для текста в моей коллекции и устанавливает индекс к свойству Index из аргументов событий.

private void listViewFields_SearchForVirtualItem(object sender, SearchForVirtualItemEventArgs e) 
{ 
     e.Index = collection.IndexOf(e.Text); 
} 

Значение e.Index действительно соответствует ожидаемому значению, но в моем ListView ничего не происходит.

+0

Рассматривали ли вы, глядя на MSDN четыре [ListView.SearchForVirtualItem Event] (https://msdn.microsoft.com/en-us/library/system.windows.forms.listview.searchforvirtualitem (v = vs.110) .aspx) – MethodMan

+0

Это то, что я использую. Если вы заметите мой второй блок кода, я обрабатываю это событие. Метод FindItemWithText запускает это событие и значение e.Text в событии args - это значение, которое я передал FindItemWithText. Ничего не произошло. – James

+0

http://stackoverflow.com/questions/27129619/how-to-use-finditemwithtext – MethodMan

ответ

0

Значение e.Index действительно соответствует ожидаемому значению, но в моем ListView ничего не происходит.

Метод FindItemWithText делает именно то, что он говорит, - находит и возвращает первого ListViewItem, который начинается с указанным значением текста.

Чтобы что-то произошло в вашем представлении списка, вам нужно что-то сделать с возвращенным элементом. Например:

var item = listViewFields.FindItemWithText(txtSearch.Text); 
if (item != null) 
{ 
    listViewFields.FocusedItem = item; 
    item.Selected = true; 
    item.EnsureVisible(); 
} 
+0

Это тоже не работает. – James

+0

Он что-то возвращает? –

+0

Да, да. Он возвращает элемент, который я ожидал. Проблема в том, что представление списка не переходит к этому элементу. – James