.NET 4.x Реализовать в выпадающем списке ComboBox'а поиск по любой части слова - Visual Basic .NET
Формулировка задачи:
Всем доброго времени суток!
Хочу реализовать в выпадающем списке ComboBox'а поиск по любой части слова, а не только с начала.
Столкнулся с такой проблемой:
Есть источник со списком слов,
Вводим в ComboBox одну или несколько букв, к примеру букву "д". В выпадающем списке должны появится слова, в которых есть эта буква.Сам код поиска я уже написал (самый простой вариант, не суть):
Спойлер
Вопрос - как сделать так:
(либо как запихнуть результат в имеющийся ComboBox или как сделать свой?)Решение задачи: «.NET 4.x Реализовать в выпадающем списке ComboBox'а поиск по любой части слова»
textual
Листинг программы
Dim Index As Integer = 0 Dim tSourceList() As String = {"Седина-Кузнечная 1", "Садовая-Кудринская 2", "Садовая-Кудринская 3", "Декабристов 36", "Ленинградский 7"} Dim NewList As List(Of String) = New List(Of String) Dim Test As List(Of String) = New List(Of String) Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged ComboBox1.Items.Clear() NewList.Clear() For Each t As String In tSourceList If ComboBox1.Text.Length > 0 Then If t.ToLower.Contains(ComboBox1.Text.ToLower) Then NewList.Add(t) Index = ComboBox1.Text.Length Else Index = ComboBox1.Text.Length End If Else NewList.Clear() End If Next ComboBox1.DropDownHeight = (ComboBox1.ItemHeight) * (NewList.Count) + 2 If NewList.Count <= 0 Then ComboBox1.Items.Add("") ComboBox1.DroppedDown = False ComboBox1.SelectionStart = Index Else If IdentityList(NewList, Test) = True Then ComboBox1.SelectionStart = Index Cursor = Cursors.Default For i = 0 To NewList.Count - 1 Step 1 ComboBox1.DroppedDown = True ComboBox1.Items.Add(NewList(i)) ComboBox1.SelectionStart = Index Next Else Test.Clear() For i = 0 To NewList.Count - 1 Step 1 Test.Add(NewList(i)) Next ComboBox1.Items.Add("") ComboBox1.DroppedDown = False ComboBox1.Items.Clear() ComboBox1.SelectionStart = Index For i = 0 To NewList.Count - 1 Step 1 ComboBox1.DroppedDown = True ComboBox1.Items.Add(NewList(i)) ComboBox1.SelectionStart = Index Next Cursor = Cursors.Default End If End If End Sub Function IdentityList(ByVal List1 As List(Of String), ByVal List2 As List(Of String)) As Boolean IdentityList = True If List1.Count - 1 = List2.Count - 1 Then For i = 0 To List1.Count - 1 Step 1 If List1(i) <> List2(i) Then Return False End If Next Else Return False End If End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д