Как обработать нажатие по 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);
}