Access Key Causes Different Event Order than Clicking

ID Number: Q74905

1.00

WINDOWS

Summary:

In Visual Basic, events may be generated in a different order if you

choose a control (such as a button, a check box, or an option box)

using an access key rather than with the mouse. The events that occur

in a different order are Click, LostFocus, and GotFocus. The differing

order of events is by design and is not the result of a problem with

Visual Basic.

This information applies to Microsoft Visual Basic programming system

version 1.0 for Windows.

More Information:

You can create an access key at design time by changing the

Caption property of a control to include an ampersand (&). The access

key is the character after the ampersand, and at run time you press

ALT+character to choose the control. (See page 120 of the "Microsoft

Visual Basic: Programmer's Guide" version 1.0. manual.)

When you press an access key (ALT+character) to choose a control, the

Click event is generated before the LostFocus and GotFocus event;

however, when you choose a control by clicking the mouse, the

LostFocus and GotFocus events are generated before the Click event.

The example below shows this different order of events. The example

uses command buttons, but also applies to Check and Option boxes:

1. Open a new form and create two command buttons.

2. Enter the code as shown further below.

3. Change the Caption property of Command2 to "Command&2"

4. Run the program.

5. a. When Command1 has the focus and you click on Command2, the

following events are generated in the following order:

Command1_LostFocus

Command2_GotFocus

Command2_Click

b. When Command1 has the focus and you press the access key, ALT+2,

the following events are generated in the following order:

Command2_Click

Command1_LostFocus

Command2_GotFocus

Sample Code:

-----------

Sub Command1_Click ()

Print "Command1_click"

End Sub

Sub Command1_LostFocus ()

Print "Command1_lostfocus"

End Sub

Sub Command1_GotFocus ()

Print "Command1_gotfocus"

End Sub

Sub Command2_Click ()

Print "Command2_click"

End Sub

Sub Command2_LostFocus ()

Print "Command2_lostfocus"

End Sub

Sub Command2_GotFocus ()

Print "Command2_gotfocus"

End Sub

Additional reference words: 1.00