|
|
|
The ComboBox control exposes the DropDown event, that lets you determine when its list area is being opened. However, VB doesn't offer any simple way to understand when the list area is being closed. You can achieve this by intercepting the WM_COMMAND message that the ComboBox control sends to its container (can be the parent form, or a container control such as a PictureBox control). The following code shows how you can trap this message using the MsgHook component (that you can download from the File Bank section of this site): |
Click here to copy the following block |
Const WM_COMMAND = &H111 Const CBN_DROPDOWN = 7 Const CBN_CLOSEUP = 8
Dim WithEvents FormHook As MsgHook
Private Sub Form_Load() Set FormHook = New MsgHook FormHook.StartSubclass Me.hWnd End Sub
Private Sub FormHook_AfterMessage(ByVal uMsg As Long, ByVal wParam As Long, _ ByVal lParam As Long, retValue As Long) Dim Ctrl As Control Dim ctrlIndex As Long Dim cmdCode As Long If uMsg = WM_COMMAND Then ctrlIndex = (wParam And &HFFFF&) - 1 Set Ctrl = Me.Controls(ctrlIndex) cmdCode = (wParam And &HFFFF0000) \ &H10000
If Not TypeOf Ctrl Is ComboBox Then ElseIf cmdCode = CBN_DROPDOWN Then Debug.Print Ctrl.Name & " is being opened" ElseIf cmdCode = CBN_CLOSEUP Then Debug.Print Ctrl.Name & " is being closed" End If End If End Sub |
|
|
|
Submitted By :
Nayan Patel
(Member Since : 5/26/2004 12:23:06 PM)
|
|
|
Job Description :
He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting. |
View all (893) submissions by this author
(Birth Date : 7/14/1981 ) |
|
|