Impedire in una DrawingArea che si esegua il codice presente nell'Evento " Draw()" , qualora sia sollevato arbitrariamente più di una volta

Da Gambas-it.org - Wikipedia.

Come è noto, l'Evento "_Draw()" del Controllo DrawingArea viene sollevato all'inizio per tre volte. Può essere sollevato arbitrariamente anche più di una volta, anche qualora venga sollecitato legittimamente dal previsto codice nel prosieguo del programma.

Per impedire che una volta sollecitato, l'Evento "_Draw()" della DrawingArea sia sollevato arbitrariamente per più della volta richiesta, possiamo adottare lo stratagemma, qui riportato all'interno dell'Evento "_Draw()":

Private DrawingArea1 As DrawingArea
Private c As Integer
Private i As Integer


Public Sub _new()
 
 With Me
   .Center
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With

 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End

Public Sub Form_Open()

 Me.Show

 Do
   Inc c
   Wait 0.3
   If Object.IsValid(DrawingArea1) Then 
     DrawingArea1.Refresh
   Else 
     Break
   Endif
 Loop

End

Public Sub DrawingArea1_Draw()

 If c == i Then 
   Inc c
   Return 
 Endif

 i = c

 Print i

End