ID Number: Q79241
1.00
WINDOWS
Summary:
Resetting the ListIndex property of a list box, combo box, directory
list box, or a file list box at run time generates a Click event for
the control. For a drive list box, resetting the ListIndex property
generates a Change event.
This is a result of the Windows subclass definition for these
controls. When an item in one of these list boxes is selected, a Click
event (or Change event for drive list box) occurs and the ListIndex
property is updated. Conversely, when the ListIndex property is
changed, a message occurs, generating the corresponding event.
This behavior is not documented in the Visual Basic documentation or
online Help.
This information applies to the Microsoft Visual Basic programming
system version 1.0 for Windows.
More Information:
This undocumented behavior can cause some unexpected results. For
example, if code in a Click (or Change) event procedure is assigning
the selected items in the list box to an array or directly to the Text
property of another control, resetting the ListIndex property will
cause another such assignment, but with the new item.
If the ListIndex is reset to -1, a null item will be assigned by the
code because that setting indicates no item is selected.
To demonstrate this behavior, do the following:
1. Run Visual Basic, or from the File menu, choose New Project if
Visual Basic is already running. Form1 will be created by default.
2. Put a combo box (Combo1) on Form1.
3. Add a text box (Text1) to Form1.
4. Add a command button (Command1) to Form1.
5. Add the following code to the Click event for the list box chosen:
Sub Combo1_Click ()
text1.text = combo1.text
End Sub
Note: For drive and directory list boxes, the assignment would be
text1.text=drive1.list(drive1.ListIndex)
-or-
text1.text=dir1.list(dir1.ListIndex)
Add the following code to the Click event procedure for Command1:
Sub Command1_Click ()
combo1.ListIndex = -1
End Sub
Add the following code to the Form_Load event procedure of Form1:
Sub Form_Load ()
For n = 1 To 10
combo1.AddItem Format$(n, "0")
Next
End Sub
Run the program. Notice that when the Command1 button is pressed, the
list box is updated as expected, the code in the Click event procedure
for the list box is executed, and the Text property of the text box is
changed.
Reference(s):
"Programming Windows: the Microsoft Guide to Writing Applications for
Windows 3," by Charles Petzold, Microsoft Press, 1990
"Microsoft Windows Software Development Kit: Reference Volume 1,"
version 3.0
WINSDK.HLP file shipped with Microsoft Windows 3.0 Software
Development Kit
Additional reference words: 1.00