Microsoft KB Archive/84474

= How to Close VB Combo Box with ENTER key =

Article ID: 84474

Article Last Modified on 11/18/2003

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 1.0 Standard Edition

-



This article was previously published under Q84474



SUMMARY
If you open a combo box and then use the ARROW keys to scroll through it, pressing the ENTER key will not close the combo box like a mouse click will. This is normal behavior. The following example demonstrates how to make a combo box close when the ENTER key is pressed.



MORE INFORMATION
The following program makes use of the Windows API SendMessage function to send the combo box the message to close. This is done only after the ENTER key is detected in the KeyPress event for the combo box.

Two Windows API Declare statements must be added to your application. These can be added either in the GLOBAL.BAS module, or in the general Declarations section of the form containing the combo box.

Steps to Reproduce Behavior
 Run Visual Basic for Windows, or from the File menu, choose New Project (press ALT, F, N) if Visual Basic for Windows is already running. Form1 is created by default.  Add the following two declarations to the global module or the General Declarations for Form1: Declare Function SendMessage% Lib &quot;user&quot; (ByVal hWnd%, ByVal                 wMsg%, ByVal wParam%, ByVal lParam&) Declare Function GetFocus Lib &quot;user&quot; As Integer

(Note that the first Declare statement must be on just one line, not  split across two lines as it is here.)

 Place a combo box on Form1.  Under the KeyPress event for the combo box, place the following code: If KeyAscii = 13 Then Const WM_USER = &h400 Const CB_SHOWDROPDOWN = WM_USER + 15

Combo1.SetFocus BoxwHND% = GetFocus r& = SendMessage(BoxwHND%, CB_SHOWDROPDOWN, 0, 0) KeyAscii = 0 End If

 Place a command button on Form1.  In the Click event for Command1, place the following code: ' This will add some data to the combo box. for i =1 to 10 Combo1.AddItem STR$(i) Next i

 Press the F5 key to run the application.</li> Choose the Command1 button to fill the combo box.</li> Open the combo box with the mouse, and scroll down with the ARROW keys. Pressing the ENTER key will close the Combo Box.</li></ol>

Additional query words: 2.00 3.00

Keywords: KB84474

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.