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 : 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
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 serait le bienvenu!
Merci,

A+
JLuc01