List Of Buttons et methode recursive
Bonsoir,
J'ajoute une serie de boutons dans une grille delimitee (Bouton introduit sur cette grille par un Drag & Drop). Ces boutons se replacent automatiquement lors de l'evenement Mouse_up qui appelle la Sub SetLocation.
Lorsque je sors de la grille, je voudrais supprimer le dernier bouton selectionne.
Voila le code que j'utilise avec un probleme que je comprends, mais je ne sais pas comment le contourner ou le resoudre (recursivite et list of buttons).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Public Function Collision(ByVal selBtn As Button, ByVal xBtn As Button) As Boolean
If selBtn.Bounds.IntersectsWith(xBtn.Bounds) Then
Return True
Else
Return False
End If
End Function
Public Sub SetLocation(ByVal selBtn As Button)
selBtn.Left = selBtn.Left + 20
selBtn.Top = selBtn.Top
If selBtn.Left + selBtn.Width > 500 Then
selBtn.Left = 20
selBtn.Top = selBtn.Top + 20
End If
If selBtn.Top + selBtn.Height > 500 Then
myPanel.Controls.Remove(selBtn)
lstButtons.Remove(selBtn) 'PROBLEM: lstButtons modified THEN ForEach issue
Exit Sub
End If
' ================================================
For Each item As Button In lstButtons
If item Is selBtn Then Continue For
If Collision(selBtn, item) Then
SetLocation(selBtn)
End If
Next
' ================================================
End Sub |
Et oui, je modifie ma liste alors que ma boucle ForEach n'est pas terminee. J'avoue, c'est pas terrible!
C'est dommage, car j'etais assez content du code jusqu'a ce dernier probleme.
Un petit coup de pouce :ccool: serait le bienvenu!
Merci,
A+
JLuc01