.NET 4.x Реализовать в выпадающем списке ComboBox'а поиск по любой части слова - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Хочу реализовать в выпадающем списке ComboBox'а поиск по любой части слова, а не только с начала. Столкнулся с такой проблемой: Есть источник со списком слов,
Спойлер
Вводим в ComboBox одну или несколько букв, к примеру букву "д". В выпадающем списке должны появится слова, в которых есть эта буква.Сам код поиска я уже написал (самый простой вариант, не суть):
Листинг программы
  1. Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
  2. ListBox1.Items.Clear() 'список с результатами
  3. For Each t As String In ListBox2.Items 'список - источник
  4. If t.ToLower.Contains(ComboBox1.Text.ToLower) Then ListBox1.Items.Add(t)
  5. Next
  6. End Sub

Вопрос - как сделать так:

(либо как запихнуть результат в имеющийся ComboBox или как сделать свой?)

Решение задачи: «.NET 4.x Реализовать в выпадающем списке ComboBox'а поиск по любой части слова»

textual
Листинг программы
  1.     Dim Index As Integer = 0
  2.     Dim tSourceList() As String = {"Седина-Кузнечная 1", "Садовая-Кудринская 2", "Садовая-Кудринская 3", "Декабристов 36", "Ленинградский 7"}
  3.     Dim NewList As List(Of String) = New List(Of String)
  4.     Dim Test As List(Of String) = New List(Of String)
  5.  
  6.     Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
  7.         ComboBox1.Items.Clear()
  8.         NewList.Clear()
  9.  
  10.         For Each t As String In tSourceList
  11.             If ComboBox1.Text.Length > 0 Then
  12.                 If t.ToLower.Contains(ComboBox1.Text.ToLower) Then
  13.                     NewList.Add(t)
  14.                     Index = ComboBox1.Text.Length
  15.                 Else
  16.                     Index = ComboBox1.Text.Length
  17.                 End If
  18.             Else
  19.                 NewList.Clear()
  20.             End If
  21.         Next
  22.         ComboBox1.DropDownHeight = (ComboBox1.ItemHeight) * (NewList.Count) + 2
  23.         If NewList.Count <= 0 Then
  24.             ComboBox1.Items.Add("")
  25.             ComboBox1.DroppedDown = False
  26.             ComboBox1.SelectionStart = Index
  27.         Else
  28.             If IdentityList(NewList, Test) = True Then
  29.                 ComboBox1.SelectionStart = Index
  30.                 Cursor = Cursors.Default
  31.                 For i = 0 To NewList.Count - 1 Step 1
  32.                     ComboBox1.DroppedDown = True
  33.                     ComboBox1.Items.Add(NewList(i))
  34.                     ComboBox1.SelectionStart = Index
  35.                 Next
  36.             Else
  37.                 Test.Clear()
  38.                 For i = 0 To NewList.Count - 1 Step 1
  39.                     Test.Add(NewList(i))
  40.                 Next
  41.                 ComboBox1.Items.Add("")
  42.                 ComboBox1.DroppedDown = False
  43.                 ComboBox1.Items.Clear()
  44.                 ComboBox1.SelectionStart = Index
  45.                 For i = 0 To NewList.Count - 1 Step 1
  46.                     ComboBox1.DroppedDown = True
  47.                     ComboBox1.Items.Add(NewList(i))
  48.                     ComboBox1.SelectionStart = Index
  49.                 Next
  50.                 Cursor = Cursors.Default
  51.             End If
  52.         End If
  53.     End Sub
  54.  
  55.     Function IdentityList(ByVal List1 As List(Of String), ByVal List2 As List(Of String)) As Boolean
  56.         IdentityList = True
  57.         If List1.Count - 1 = List2.Count - 1 Then
  58.             For i = 0 To List1.Count - 1 Step 1
  59.                 If List1(i) <> List2(i) Then
  60.                     Return False
  61.                 End If
  62.             Next
  63.         Else
  64.             Return False
  65.         End If
  66.     End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы