Les boutons n'ont pas d'événement Touch. Il faut soit utiliser un Panel à la place, soit utiliser une bibliothèque comme Gesture Detector qui permet de détecter toute sorte d'événements indépendamment de ce qui est implémenté pour l'objet. On peut consulter la liste des événements d'un objet en tapant Sub, espace puis Tab.
Pour l'exemple qui suit, on va se passer de l'événement Touch et utiliser les événements Up et Down du bouton (qui sont eux-mêmes basés sur l'événement Touch), mais je vous les déconseille car le code derrière est, disons, étrange (vous verrez qu'ils ont un fonctionnement qui ne correspond pas tout à fait à leur description).
Pour qu'une action quelconque puisse se répéter dans le temps, il faut bien évidemment quelque chose qui provoque cette répétition. Soit une action de l'utilisateur, soit une minuterie. Comme l'interrupteur des toilettes
Dans le cas présent, on va utiliser une minuterie puisqu'il n'y a qu'une action utilisateur attendue: l'appui sur un bouton (et bien évidemment le relâchement du bouton, qui mettra fin au processus).
Sub Process_Globals
Dim Minut As Timer
End Sub
Sub Globals
Dim Btn As Button
End Sub
Sub Btn_Down
Minut.Initialize("Minut", 500) ' La minuterie se declenchera toutes les 500 millisecondes
Minut.Enabled = True 'La minuterie est enclenchee (elle declenchera l'evenement Tick)
End Sub
Sub Btn_Up
Minut.Enabled = False 'J'arrete la minuterie
End Sub
Sub Minut_Tick
'Ici je fais l'action a repeter
End Sub
Je vous conseille aussi d'ajouter ce bout de code pour arrêter automatiquement la minuterie quand l'appli perd la main:
Sub Activity_Pause(UserClosed As Boolean)
Minut.Enabled = False
End Sub