Event Sequences in Visual Basic VB6
Event Table
Action | Events triggered (in order) | |
form load | Form_Load Form_Resize Form_Activate firsttabindexcontrol_GotFocus Form_Paint | |
form minimize | Form_Resize | |
form restore from icon | Form_Paint (note: no Form_Resize) | |
form maximize | Form_Resize Form_MouseMove (note: even with no mouse movement!) Form_Paint | |
form restore from max | Form_Resize | |
form move by drag | Form_MouseMove... | |
form resize by drag | Form_MouseMove... Form_Resize Form_Paint Form_MouseMove... (note 2nd 'relative' move) | |
form close | Form_QueryUnload Form_Unload | |
click in text box | Text1_MouseMove... (only when Text1.Enabled is True) (sets Text1.SelStart BEFORE MouseDown event) Text1_MouseDown (note: before LostFocus!) prevcontrol_LostFocus Text1_GotFocus Text1_MouseUp Text1_Click | |
single character in text box | Text1_MouseMove... Form_KeyDown (if Form.KeyPreview is True) Text1_KeyDown Form_KeyPress (if Form.KeyPreview is True) Text1_KeyPress Text1_Change Form_KeyUp (if Form.KeyPreview is True) Text1_KeyUp | |
combo box set by listindex | Combo1_Click (note: no Change event!) | |
single character in combo box | Combo1_GotFocus Combo1_KeyDown Combo1_KeyPress Combo1_Change Combo1_KeyUp | |
combo box select | Combo1_DropDown (note: before GotFocus!) Combo1_GotFocus Combo1_Click (note: no Change event!) | |
click on grid cell | Grid1_RowColChange (note: before GotFocus!) Grid1_MouseDown Grid1_GotFocus Grid1_SelChange Grid1_MouseUp Grid1_Click | |
click on Command1 while in Text1 | Form_MouseMove... Command1_MouseDown (note: before LostFocus!) Text1_LostFocus Command1_GotFocus Command1_Click (note: before MouseUp!) Command1_MouseUp | |
tab from Text1 to Text2 | Text1_LostFocus (note: LostFocus before GotFocus) Text2_GotFocus |
- When you click on a control other than the current one, the MouseDown event happens BEFORE the previous control's LostFocus event, and BEFORE the new control's GotFocus event. One valuable use of this is that you can detect the user clicking the Cancel button and programatically avoid running data validation in the LostFocus event of whatever field they were in before clicking Cancel.
- The Click event for a Command button happens BEFORE the MouseUp event, while for most other controls, it happens AFTER the MouseUp event.
- A number of controls have events that happen BEFORE the GotFocus event. For example, you can build or adjust the list of a ComboBox in the DropDown event before GotFocus. In the Grid control, you get a RowColChange event before the GotFocus event.
- When you click in a TextBox, the SelStart property is set (based on the position of the mouse) before ANY other event takes place.
New Validation Event in VB6
Visual Basic 6.0 added a new Validate event and CausesValidation property to aid in field-by-field validation. To use the new Validate event, set the CausesValidation property to True for each field that could receive focus, which luckily is the default value for that property. As you leave a field, the Validate event is then generated before any of the focus events (such as LostFocus) are generated. This allows you to validate the data before actually losing focus from the field.
If you want to have a field on the form that the user can select without going through any validation, you can set the CausesValidation property to False for that field. For example, if you have a Help or Cancel button, you want to allow the user to select the button without having the current field validated. So set the CausesValidation property for the Help or Cancel button to False. When the user leaves a field and clicks the Help button, the user will be able to view the help without first validating the field.
The Validate event has a Cancel parameter. You can set this parameter to True if you want to keep focus on the field that is in error. Alternatively, you can set the Cancel parameter to False (the default) if you want to allow the end-user to continue entering data without immediately correcting the problem.
You may want to use the Validate event without using the Cancel parameter. If an error occurs during validation, you can set the field’s Forecolor property to red and modify the ToolTipText property to display the specific error message for that field. That tells the user something is wrong without interrupting the data entry flow.