Se l'Evento MouseDown() della ListBox non funziona

Da Gambas-it.org - Wikipedia.

Con il variare delle versioni di Gambas l'Evento "_MouseDown()" può non funzionare.

La spiegazione di questo fatto è così data da B. Minisini nella Mailing List ufficiale di Gambas:

« Compound non-native controls usually eat some of the low-level events.
 You should normally never try to handle low-level events on complex controls.

 Controls written in Gambas are usually made with a container and other controls inside. So the low-level events are the one from that container, and you usually do not see them, because the inner controls cover the container.
Controls written in Gambas that are not a container, but based on a UserControl, usually use the low-level events for their own use, so you do not see them too. »

Vedasi: https://lists.gambas-basic.org/pipermail/user/2023-December/080959.html

A tal riguardo è stata proposta la seguente soluzione, per ottenere il risultato richiesto:

Public Sub Form_Open()

 Dim hobs As Observer = New Observer(ListBox1.Children[0]) As "ListBox1Inner"

End


Public Sub ListBox1Inner_MouseDown()

 Object.Raise(ListBox1, "MouseDown")

 Stop Event   ' Blocca ulteriori immediate sollevazioni dell'Evento

End


Public Sub ListBox1_MouseDown()   ' Ora l'Evento "_MouseDown()" funziona

 Debug "got mousedown"

End