Beim ListView-Steuerelement aus den Microsoft Common Controls werden Sie zwar das ItemClick-Ereignis finden, jedoch vergeblich nach dem entsprechenden ItemDblClick-Ereignis suchen. Immerhin gibt es wie bei den meisten Steuerelementen das DblClick-Ereignis. Doch hier fehlt Ihnen die Möglichkeit zur Feststellung des "betroffenen" ListItems. Es wird weder als Parameter der Ereignisprozedur übermittelt (wie etwa beim ItemClick-Ereignis), noch werden Ihnen die Mauskoordinaten geliefert, anhand derer Sie sich von der HitTest-Methode des ListView-Steuerelements ein gegebenenfalls angeklicktes ListItem liefern lassen könnten.
Da aber einem Doppelklick ein MouseDown-Ereignis vorangegangen ist, können Sie die HitTest-Methode mit den dort übermittelten Mauskoordinaten füttern. Das Ergebnis legen Sie in einer Variablen mit modulweitem Gültigkeitsbereich ab (die Sie im Allgemein-Teil etwa eines Form-Moduls deklarieren.
Im DblClick-Ereignis können Sie nun prüfen, ob diese Variable "Nothing" enthält (der Doppelklick ging ins Leere). Oder sie enthält das doppelt angeklickte ListItem, mit dem Sie nun wie gewünscht weiter arbeiten können.
Private mListView1ItemClicked As ListItem
Private Sub ListView1_DblClick()
If Not (mListView1ItemClicked Is Nothing) Then
MsgBox mListView1ItemClicked.Text
End If
End Sub
Private Sub ListView1_MouseDown(Button As Integer, _
Shift As Integer, x As Single, y As Single)
Set mListView1ItemClicked = ListView1.HitTest(x, y)
End Sub
|