Combox中有:
“a1”“a2”“a3”“a4”“a5”“a6”
“b1”“b2”“b3”“b4”“b5”“b6”
“c1”“c2”“c3”“c4”“c5”“c6”
“d1”“d2”“d3”“d4”“d5”“d6”
当用户输入:b,下拉框自动展开,当前选择为“b1”
“a1”“a2”“a3”“a4”“a5”“a6”
“b1”“b2”“b3”“b4”“b5”“b6”
“c1”“c2”“c3”“c4”“c5”“c6”
“d1”“d2”“d3”“d4”“d5”“d6”
当用户输入:b,下拉框自动展开,当前选择为“b1”
解决方案 »
- 为什么这样不能触发双击事件
- 修改已经编译好的VB程序的窗口和窗口里面的控件位置等??
- 为什么我用代码打开WORD之后再关闭,总会产生隐藏文件,而且关闭WORD后也存在
- 晕倒...继续问....模块..模块...救命...
- 哪位高手可否介绍一下远程控制中"当我进行键盘、鼠标操作时,远程电脑也跟我做同样的操作"的原理?
- 请问各位高程学VB应前看什么书?
- 菜鸟求助:word vba对于文档中canvas的剪切粘贴后canvas名称改变?
- 数据库连接
- 捡分!
- 怎样用VB 编制程序把已有的一个数据库的表及其记录全部加入到另外的数据库当中
- 如何保存文本格式
- 一个录入界面,我想新增一笔记录后,不退出界面,界面的内容清空,继续添加。怎么处理。
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const CB_SHOWDROPDOWN = &H14F
Private Const WM_SETREDRAW As Long = &HB&
Private Const CB_FINDSTRING As Long = &H14C& 'iKeyCode目的:传递KeyDown事件中的KeyCode
Private iKeyCode As Integer Public Sub SearchCombo(InControl As Object)
On Error GoTo errTrap
Dim StrPos As Long
Dim lPos As Long
Dim SearchStr As String
If TypeOf InControl Is ComboBox Then
StrPos = InControl.SelStart
SearchStr = Left$(InControl.Text, StrPos)
lPos = SendMessage(InControl.hwnd, CB_FINDSTRING, 0, ByVal SearchStr)
If lPos >= 0 Then
InControl.Text = InControl.List(lPos)
InControl.ListIndex = lPos
End If
With InControl
.SelStart = StrPos
.SelLength = Len(InControl.Text)
End With
End If
Exit Sub
errTrap:
MsgBox Err.Description
End Sub
Private Sub Combo1_Change()
If iKeyCode <> vbKeyBack And iKeyCode <> vbKeyReturn Then
SearchCombo Combo1
SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
End If
End Sub Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
iKeyCode = KeyCode
End Sub Private Sub Form_Load()
Combo1.AddItem "asqwed"
Combo1.AddItem "fgtthgh"
Combo1.AddItem "nfgftrtyr"
Combo1.AddItem "werwerwe"
Combo1.AddItem "ytrtyrtyrty"
Combo1.AddItem "bfrthrtyrt"
Combo1.AddItem "rewerwe"
Combo1.AddItem "vsfsdf"
End Sub 来源:http://lxcc.cnblogs.com/archive/2004/11/17/64717.html
Dim strCombo As String
Const WM_SETREDRAW = &HB
Const KEY_A = 65
Const KEY_Z = 90
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub combo1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim x%
Dim strTemp$
Dim nRet& If KeyCode >= KEY_A And KeyCode <= KEY_Z Then
'only look at letters A-Z
strTemp = Combo1.Text
If Len(strTemp) = 1 Then strCombo = strTemp
nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, False, 0&)
For x = 0 To (Combo1.ListCount - 1)
If UCase((strTemp & Mid$(Combo1.List(x), Len(strTemp) + 1))) = UCase(Combo1.List(x)) Then
Combo1.ListIndex = x
Combo1.Text = Combo1.List(x)
Combo1.SelStart = Len(strTemp)
Combo1.SelLength = Len(Combo1.Text) - (Len(strTemp))
strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
Exit For
Else
If InStr(UCase(strTemp), UCase(strCombo)) Then
strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
Combo1.Text = strCombo
Combo1.SelStart = Len(Combo1.Text)
Else
strCombo = strTemp
End If
End If
Next
nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, True, 0&)
End If
End SubPrivate Sub Form_Load()
Combo1.AddItem "AAAAAAAA"
Combo1.AddItem "ABBBBBBB"
Combo1.AddItem "ABCCCCCC"
Combo1.AddItem "ABCDDDDD"
Combo1.AddItem "ABCDEEEE"
Combo1.AddItem "ABCDEFFF"
Combo1.AddItem "ABCDEFGG"
Combo1.AddItem "ABCDEFGH"
End Sub自己在WORD中改装一下。