Как обработать нажатие по PictureBox, если он создан программно?

следующим кодом я создаю двумерный массив pictureBox.

private PictureBox[,] pics = new PictureBox[6, 6];

private void createMap() {

        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < 6; j++)
            {
                pics[i, j] = new PictureBox();
                pics[i, j].Location = new Point(34 + 76 * j, 99 + 76 * i);
                pics[i, j].Size = new Size(70, 70);
                pics[i, j].Image = Properties.Resources.BackGroundLime;
                this.Controls.Add(pics[i, j]);
            }
        }
    }

Подскажите, как понять по какому pictureBox было нажато?


Ответы (2 шт):

Автор решения: timur
for (int i = 0; i < 6; i++)
{
    for (int j = 0; j < 6; j++)
    {
        pics[i, j] = new PictureBox();
        pics[i, j].Location = new Point(34 + 76 * j, 99 + 76 * i);
        pics[i, j].Size = new Size(70, 70);
        pics[i, j].Image = Properties.Resources.BackGroundLime;
        pics[i, j].Click += (object sender, EventArgs args) => 
            MessageBox.Show($"Вы нажали на pics[{i}, {j}]");
        this.Controls.Add(pics[i, j]);
    }
}
→ Ссылка
Автор решения: Happy_Sweetice
private void Form1_Load(object sender, EventArgs e)
    {
        for (var i = 0; i < 6; i++)
        {
            for (var j = 0; j < 6; j++)
            {
                pics[i, j] = new PictureBox();
                pics[i, j].Location = new Point(34 + 76 * j, 99 + 76 * i);
                pics[i, j].Size = new Size(70, 70);
                pics[i, j].Image = Properties.Resources.BackGroundLime;
                pics[i, j].MouseClick += PictureBoxes_Click;
                pics[i, j].Name = $"Блок #{i},{j}";
                Controls.Add(pics[i, j]);
            }
        }
    }
private void PictureBoxes_Click(object sender, EventArgs e)
    {
        MessageBox.Show(((PictureBox) sender).Name);
    }
→ Ссылка