
Vb中列表框控件能否实现输入字母后自动匹配列表框里的选项
Vb中列表框控件,能否实现输入字母,然后能自动匹配列表框里的选项?打个比方说,很多手机里通讯录查找联系人那种方式,输个w,以w开头的名字就出来了,比如王小伟、卫志国,然后...
Vb中列表框控件,能否实现输入字母,然后能自动匹配列表框里的选项?
打个比方说,很多手机里通讯录查找联系人那种方式,输个w,以w开头的名字就出来了,比如王小伟、卫志国,然后再输入个x,就只有王小伟这个名字了。
还有个例子,就是QQ登录的时候,如果这台电脑上很多人输入过qq号,那么你只用输入前面几个数字,后面的就可以自动匹配。
不知道我说清楚了没有,这个功能,VB中能实现吗?因为我现在编的一个程序,列表框中有很多选项(上百个),选择的话也容易眼花找不到,输入的话又是长串的中文,效率很低。怎么解决好呢? 展开
打个比方说,很多手机里通讯录查找联系人那种方式,输个w,以w开头的名字就出来了,比如王小伟、卫志国,然后再输入个x,就只有王小伟这个名字了。
还有个例子,就是QQ登录的时候,如果这台电脑上很多人输入过qq号,那么你只用输入前面几个数字,后面的就可以自动匹配。
不知道我说清楚了没有,这个功能,VB中能实现吗?因为我现在编的一个程序,列表框中有很多选项(上百个),选择的话也容易眼花找不到,输入的话又是长串的中文,效率很低。怎么解决好呢? 展开
4个回答
展开全部
listbox、combobox、filelistbox、dirlistbox等控件天生具有这个功能,不需要你写一行代码!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在COMBO的按键事件里 识别按键事件,按什么键 combo1.listinex=... 第二次<多少的话combo1.listinex=combo1.listinex+1
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以提供下思路 你可以在截取字符比对。
新手,高手不要喷我。
新手,高手不要喷我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加一个text1,就你第一个例子
Public Function py(mystr As String) As String
If mystr <> "" Then
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
Case -18710 To -18527: py = "E"
Case -18526 To -18240: py = "F"
Case -18239 To -17923: py = "G"
Case -17922 To -17418: py = "H"
Case -17417 To -16475: py = "J"
Case -16474 To -16213: py = "K"
Case -16212 To -15641: py = "L"
Case -15640 To -15166: py = "M"
Case -15165 To -14923: py = "N"
Case -14922 To -14915: py = "O"
Case -14914 To -14631: py = "P"
Case -14630 To -14150: py = "Q"
Case -14149 To -14091: py = "R"
Case -14090 To -13319: py = "S"
Case -13318 To -12839: py = "T"
Case -12838 To -12557: py = "W"
Case -12556 To -11848: py = "X"
Case -11847 To -11056: py = "Y"
Case -11055 To -10247: py = "Z"
Case Else: py = mystr
End Select
End If
End Function
Private Sub Text1_Change()
If Text1 <> "" Then
For j = 0 To List1.ListCount - 1
If py(Mid(List1.List(j), Len(Text1), 1)) = UCase(Right(Text1, 1)) Then
List1.ListIndex = j
Exit For
End If
Next
End If
End Sub
Public Function py(mystr As String) As String
If mystr <> "" Then
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
Case -18710 To -18527: py = "E"
Case -18526 To -18240: py = "F"
Case -18239 To -17923: py = "G"
Case -17922 To -17418: py = "H"
Case -17417 To -16475: py = "J"
Case -16474 To -16213: py = "K"
Case -16212 To -15641: py = "L"
Case -15640 To -15166: py = "M"
Case -15165 To -14923: py = "N"
Case -14922 To -14915: py = "O"
Case -14914 To -14631: py = "P"
Case -14630 To -14150: py = "Q"
Case -14149 To -14091: py = "R"
Case -14090 To -13319: py = "S"
Case -13318 To -12839: py = "T"
Case -12838 To -12557: py = "W"
Case -12556 To -11848: py = "X"
Case -11847 To -11056: py = "Y"
Case -11055 To -10247: py = "Z"
Case Else: py = mystr
End Select
End If
End Function
Private Sub Text1_Change()
If Text1 <> "" Then
For j = 0 To List1.ListCount - 1
If py(Mid(List1.List(j), Len(Text1), 1)) = UCase(Right(Text1, 1)) Then
List1.ListIndex = j
Exit For
End If
Next
End If
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询