2013-05-30 4 views
0

Здесь у меня есть пример реализации matchwithlist в vb.net , как всегда есть другие способы сделать это. В VB код был прост combo1.matchwithlist приобретенная был взят из http://support.microsoft.com/kb/266265/en-usMatchwithlist in visual studio

Private Sub Combo1_Change() 

    Dim listcount As Integer 
    Dim textlen As Integer 
    Dim matchexists As Boolean 

    textlen = Len(Combo1.Text) 
    For listcount = 0 To Combo1.listcount - 1 
     If UCase(Mid(Combo1.List(listcount), 1, textlen)) = UCase(Combo1.Text) Then 
      matchexists = True 
      Exit For 
     End If 
    Next 

    If Not matchexists Then 
     MsgBox "Value not present in the list... Kindly enter a valid value.." 
    End If 

End Sub 

Private Sub Form_Load() 
    Combo1.AddItem "Sam" 
    Combo1.AddItem "Paul" 
    Combo1.AddItem "Peter" 
    Combo1.Text = "" 
End Sub 
+0

В VB.NET вы можете использовать выражение LINQ, чтобы сделать проверку в целом одним слоем –

+0

Я предлагаю t o сравнить строки с 'str1.Equals (str2, StringComparison.CurrentCultureIgnoreCase)' и использовать 'MessageBox.Show (" ")' вместо устаревшего 'MsgBox' – SysDragon

+0

И, кстати, поскольку этот код не является вашим, может быть, вы могли бы подумать о добавлении ** надлежащей атрибуции ** из MSDN: http://support.microsoft.com/kb/266265/en-us – SysDragon

ответ

0

Вот простой способ:

Private Sub ComboBox1_TextChanged(sender As Object, e As System.EventArgs) Handles ComboBox1.TextChanged 
    Dim Result As Boolean = False 
    For Each itm As String In ComboBox1.Items 
     If InStr(itm, ComboBox1.Text, CompareMethod.Text) <> 0 Then 
      Result = True 
     End If 
    Next 
    If Not Result Then 
     MsgBox("No Match") 
    End If 
End Sub 

Это будет сравнивать текст, введенный после каждого символа набирается, и отобразить MessageBox если текст не может быть найден ни в одном из элементов списка со списком, игнорируя случай