Dans un GroupBox, je crée dynamiquement des PictureBox de p pictureBox sur r rangée. Je mémorise ces objets(pictureBox) dans un tableau pictureArray[r, p].
L'affichage se fait correctement. Je souhaite maintenant activer la méthode picture_Click lorsque l'évènement Click se produit sur une de ces pictureBox. Ce qui fonctionne très bien si je ne modifie pas le delegate EventHandler. Mais dans ce cas je n'ai aucune information sur la pictureBox qui a déclenché l'évènement.
J'ai donc créée une classe PictureClickEventArgs : EventArgs pour personnaliser l'information et je crée un delegate MyEventHandler que j'enregistre dans picture.Click qui se trouve dans le tableau pictureArray[r, p].
J'ai alors le message d'erreur "Impossible de convertir implicitement le type 'Test.Form1.MyEventHandle' en 'System.EventHandler'.
Voici un extrait du programme:
public delegate void MyEventHandler(object sender, PictureClickEventArgs e);
// public event MyEventHandler PictureBox.Click;
// Initialise la partie
public void SetGame()
{
for (int r = 0; r < nbPictureRangée; r++)
{
for (int p = r; p < nbPictureInit - r; p++)
{
if (pictureArray[r, p] != null)
{
PictureCoord coord;
coord.R = r;
coord.P = p;
pictureArray[r, p].Image = imageList1.Images[1];
groupBox.Controls.Add(pictureArray[r, p]);
PictureClickEventArgs e = new PictureClickEventArgs(coord);
pictureArray[r, p].Click += new MyEventHandler(picture_Click);
}
}
}
}
private void picture_Click(object sender, PictureClickEventArgs e)
{
MessageBox.Show(groupBox.Name, TabIndex.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
C'est la première fois que je m'adresse à un forum, j'ai beaucoup cherché, mais je ne trouve pas.
Partager