Bonjour,

Je sollicite votre aide car je n'arrive pas à faire la chose suivante :

J'ai un ensemble de RectangleShape dans une form appelé Case1, Case2, Case3, ...., Case13

Ce que je souhaiterais, c'est que sur un évènement mousedown sur un de ces rectangle, je passe dans une fonction qui modifie la position de ce dernier.

Actuellement, pour chaque rectangle shape je fais la chose suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 Private Sub Case1_Click(sender As Object, e As EventArgs) Handles Case1.MouseDown
 
If Case1.Location <> InitLoc1 Then
   Case1.Location = InitLoc1
Else
   Case1.Top = Case1.Location.Y - 90
End If
 
    End Sub
(InitLoc1 est initialisé au load de ma form).

Du coup plutôt que d'écrire 13 fois la même chose, je souhaiterai passer dans une fonction ou sub.
J'imaginais en gros la chose suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Private Sub Case1_Click(sender As Object, e As EventArgs) Handles Case1.MouseDown
   MoveRect(1)
End Sub
 
Private Sub MoveRect(NumRect as integer)
If Case(NumRect).Location <> InitLoc(NumRect) Then
   Case(NumRect).Location = InitLoc(NumRect)
Else
    Case(NumRect).Top = Case(NumRect).Location.Y - 90
End If
End sub
Bien sûr ça ne fonctionne pas comme ça, mais c'est pour vous donner une idée de ce que j'aimerai faire.

J'ai également essayé avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
For Each c As Control In Me.Controls
     If c.name = "Case" & NumRect
           c.location = ....
 
        Next
Mais la mon souci est pour récupérer la variable InitLoc en fonction du nom.
Et en plus ça n'a pas l'air de fonctionner avec des rectangleshape.

Auriez vous des pistes à me donner ?

Merci d'avance