2012-11-25 4 views
0

제목과 마찬가지로 지정된 인덱스에서 listview에있는 단어의 첫 번째 인스턴스를 반환하려고합니다. 그래서 이것은 내가 실제로 매개 변수에 추가 한 라인에서 실제로 리턴 할 listview의 처음부터 검색하지 않을 것임을 의미합니다. 나는 그것을 작동시키지 못했고, 선택된 항목으로 작업 할 수는 있지만 매개 변수로의 변수 입력으로는 작동하지 않습니다.지정한 라인 인덱스에서 listview의 단어 첫 번째 인스턴스를 반환하려고 시도했습니다.

Private Function FindLogic(ByVal LV As ListView, ByVal CIndex As Integer, ByVal SearchFor As String) As Integer 
    Dim idx As Integer 
    Dim It = From i In LV.Items Where i.index > LV.Items(CIndex).Index And i.Text = SearchFor 
    If It.Count > 0 Then 
     idx = It(0).Index 
    Else 
     idx = -1 
    End If 
    Return idx 
    End Function 

답변

0

검색어에 몇 가지 문제가 있습니다. 선택 부분이 누락되어 있습니다. 이것은 트릭을하는 것 같습니다 :

Dim It As List(Of ListViewItem) 
It = (From i As ListViewItem In lvwMain.Items Where i.Index > CIndex And i.Text = SearchFor Select i).ToList 

나는 Cindex가 검색을 시작하려는 ListView 항목의 색인이라고 가정합니다. 그렇다면 색인 값을 얻기 위해 해당 항목을 검색 할 필요가 없습니다 (CIndex와 동일 함).

+0

Chris가 올바르게 작동하지만 어떻게 변경하면 목록보기의 특정 열에서 단어를 찾을 수 있습니까? 나는 두 개의 칼럼을 가지고 있으며, -1 개의 결과를 얻는다. 그래서 나는 잘못된 칼럼을 검색하는 것과 관련이있다. – user1632018

+0

임의의 열을 검사하려면 SearchFor를 i.SubItems (indexOfSomeColumn) .Text와 비교해야합니다. 첫 번째 시작 이후의 모든 열에 대한 색인 값은 1입니다. 또한 문자열 키를 사용하여 하위 항목을 찾을 수도 있지만 처음에는 ListView에 추가 할 때 이름을 지정한 경우에만 사용할 수 있습니다. 또한 주어진 단어가 열 값의 일부에 있는지 알아 보려면 문자열 클래스의 Contains() 메서드를 사용할 수 있습니다. –

관련 문제