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).
Et oui, je modifie ma liste alors que ma boucle ForEach n'est pas terminee. J'avoue, c'est pas terrible!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
C'est dommage, car j'etais assez content du code jusqu'a ce dernier probleme.
Un petit coup de pouceserait le bienvenu!
Merci,
A+
JLuc01
Partager