Bonsoir
Regarde cette exemple que j'ai commenté ( les cases du jeu sont dans une classe ClassCaseJeu qui hérite de PictureBox)
L'héritage est une notion fondamentale en VB Net, C#, etc......
Private ReadOnly PictJeu As New List(Of ClassCaseJeu) ' les cases du Jeu
Private ReadOnly CouleurPion As List(Of Color) = New List(Of Color) From {Color.Black, Color.Yellow, Color.Lime, Color.Red, Color.Magenta}
Private WithEvents Jeu As New ClassJeu
Private Chrono As Boolean
Private Source As String, Destination As String
Private SourceIndex As Integer, DestinationIndex As Integer
Private CouleurSource As Integer, CouleurDestination As Integer
''' <summary>
''' Chargement de la form
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim CaseJeu As ClassCaseJeu ' on déclare une case du jeu
Dim CaseLeft As Integer, CaseTop As Integer ' les positions Left et Height de la case du jeu
Dim Index As Integer = 0 ' pour nommer les CasesJeu ( elles seront nommées dans la classe de "PictJeu0" à "Pictjeu14"
CaseJeu = Nothing
CaseTop = 50
For i = 0 To 4 ' pour une grille de 5 x 5
CaseLeft = 100
For j = 0 To 4
CaseJeu = New ClassCaseJeu(Index, CaseLeft, CaseTop) ' on crée la nouvelle Case du jeu
PictJeu.Add(CaseJeu) ' on l'ajoute à la List(of ClassCaseJeu)
AddHandler CaseJeu.MouseDown, AddressOf CaseJeuMouseDown ' évènement Mousedown sur une case quelconque
Controls.Add(CaseJeu) ' on ajoute la case du jeu sur la Form ( comme elle hérite de PictureBox on affiche une CaseJeu "pictureboxée"
CaseLeft += 59
Index += 1
Next
CaseTop += 59
Next
Initialisation() ' initialisation du jeu
End Sub
' clic sur une case du jeu
Private Sub CaseJeuMouseDown(sender As Object, e As MouseEventArgs)
Dim SourceIndex as integer = Convert.ToInt32((DirectCast(sender, PictureBox).Name).Substring(7))
' suite du code
End Sub
Pour le clic sur une case du jeu "sender as Object" représente l'object sur lequel on a cliqué . Il faut le "caster" en PictureBox pour y accéder ( c'est une sorte de "conversion" )
. Une fois que l'on peut accéder à la PictureBox on peut avoir sa propriété Name ( de "PictJeu0" à "PictJeu14" . Le Substring permet de ne garder que le nombre 0 à 14 ce qui permet de savoir quelle case du jeu on a cliqué et on y accède par Pictjeu(SourceIndex).BackColor = Color.Red
par exemple