Double-clicking an icon or file name in Explorer is the standard way of launching an application in Windows. However, if you’re developing an app that uses the ListView control from the Microsoft Windows Common Controls library (COMCTL32.ocx), this functionality is not directly exposed through an event. You have a DoubleClick event for the ListView control, but this event gets raised when a user double-clicks anywhere on the control. You also have an ItemClick event, but this event is only fired for a single-click on a ListItem object. Wouldn’t it be nice to have an ItemDoubleClick event?
Use the ListView’s MouseUp event to trap the X and Y coordinates of where the user last clicked the mouse. Here’s a way to implement this functionality in your code:
Option ExplicitPrivate sngListViewX As SinglePrivate sngListViewY As SinglePrivate Sub ListView1_MouseUp(Button As Integer, Shift As _ Integer, x As Single, y As Single) sngListViewX = x sngListViewY = yEnd Sub
After trapping these coordinates, pass them to the HitTest method of the ListView control during the DoubleClick event to determine whether a user has double-clicked on a particular ListItem object:
Private Sub ListView1_DblClick() Dim lListItem As ListItem Set lListItem = ListView1.HitTest(sngListViewX, _ sngListViewY) If (lListItem Is Nothing) Then MsgBox "You did not double-click on a ListItem." Else MsgBox "You double-clicked on ListItem=" & _ lListItem.Text End If Set lListItem = NothingEnd Sub