У меня странная проблема. Я использую элемент ListView в VB.NET Forms. Во время моего поиска частичного текста (SearchText может быть abc), при поиске для первого экземпляра я пытаюсь изменить BackColor для элемента списка, он не изменяет BackColor для текущей строки.
Принимая во внимание, что при поиске нового подходящего элемента он отображает предыдущий найденный элемент BackColor синим цветом. Есть предложения по решению проблемы? Моя цель - раскрасить текущий соответствующий ряд.
Public Function SearchGridFindNext(ByRef Grid As ListView, ByVal SearchText As String, Optional ByVal FromBeginning As Boolean = False) As Boolean
Dim StartRowIndex As Integer = 0
Dim StartNextRowIndex As Integer = 0
Dim RowIndex As Integer = 0
Dim IncrementIndex As Integer = 0
Dim Found As Boolean = False
If Grid.Items.Count > 0 Then
If Grid.SelectedItems.Count > 0 Then
StartRowIndex = Grid.SelectedItems(0).Index
If FromBeginning Then StartNextRowIndex = 0 Else StartNextRowIndex = Grid.SelectedItems(0).Index + 1
Grid.SelectedItems.Clear()
End If
For RowIndex = StartRowIndex To Grid.Items.Count - 1
If RowIndex > StartRowIndex Then
StartNextRowIndex = 0
End If
For IncrementIndex = 1 To StartNextRowIndex - 1
Grid.Items(IncrementIndex).BackColor = Color.White
Next
For IncrementIndex = StartNextRowIndex To Grid.Items.Count - 1
If (Grid.Items(IncrementIndex).SubItems(0).Text.ToUpper.Contains(SearchText)) Then
Grid.Items(IncrementIndex).Selected = True
Grid.Items(IncrementIndex).EnsureVisible()
Grid.Items(IncrementIndex).BackColor = Color.Blue
Found = True
Exit For
End If
Next
If Found Then Exit For
Next
End If
Return Found
End Function