Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_GETDROPPEDSTATE = &H157
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
'' 如果按回车
If SendMessage(Combo1.hwnd, CB_GETDROPPEDSTATE, 1&, 0&) = 0 Then
'' 如果未处于下拉状态,则打开下拉列表。一定要检查,否则无法用回车关闭例表。
SendKeys "{F4}"
End If
End If
End Sub
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
'' 如果按回车
If SendMessage(Combo1.hwnd, CB_GETDROPPEDSTATE, 1&, 0&) = 0 Then
'' 如果未处于下拉状态,则打开下拉列表。一定要检查,否则无法用回车关闭例表。
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 1&, 0&
KeyCode = 0 ' 一定要加上这个,否则下拉列表自动关闭
End If
End If
End Sub
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const CB_SHOWDROPDOWN = &H14F
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
End Sub
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_SHOWDROPDOWN = &H14F
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, True, ByVal 0
End If
End Sub
′以下声明用于16位
Const WM_USER = &H400
Const CB_SHOWDROPDOWN = (WM_USER + 15)
Private Declare Function SendMessage Lib "User" (ByVal hwnd As Integer, _
ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
′以下声明用于32位
Const CB_SHOWDROPDOWN = &H14F
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Form_Load()
Combo1.AddItem "11111"
Combo1.AddItem "22222"
Combo1.AddItem "33333"
Combo1.AddItem "44444"
Combo1.AddItem "55555"
Combo1.AddItem "66666"
′Form_Load 即自动下拉 Combo1
Dim nret As Long
nret = SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&)
End Sub