Я пытаюсь сделать событие из 8 picturebox вместе, это мой код, но когда я нажимаю на него, он всегда имеет одно и то же изображение, событие, которое он делал дважды, я помещаю сообщение о событии с картинками и появляется дважды.
public partial class Form1 : Form
{
int jug=1;
PictureBox[] PicBox = new PictureBox[9];
Image circu = Image.FromFile("Circulo1.png");
Image cruz = Image.FromFile("Cruz1.png");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
PicBox[0] = this.pcb0;
PicBox[1] = this.pcb1;
PicBox[2] = this.pcb2;
PicBox[3] = this.pcb3;
PicBox[4] = this.pcb4;
PicBox[5] = this.pcb5;
PicBox[6] = this.pcb6;
PicBox[7] = this.pcb7;
PicBox[8] = this.pcb8;
for (int i = 0; i < 9; i++)
{
PicBox[i].Click += new System.EventHandler(PictureBoxes_Click);
}
}
private void PictureBoxes_Click(object sender, EventArgs e)
{
PictureBox p = (PictureBox)sender;
if (jug == 1)
{
jug = 2;
p.Image = cruz;
}
else
{
jug = 1;
p.Image = circu;
}
}
У вас есть только 2 разных изображения с одним экземпляром. Попробуйте клонировать изображения, поэтому каждый PictureBox получает собственный экземпляр изображения:
private void PictureBoxes_Click(object sender, EventArgs e)
{
PictureBox p = (PictureBox)sender;
if (jug == 1)
{
jug = 2;
p.Image = (Image)cruz.Clone();
}
else
{
jug = 1;
p.Image = (Image)circu.Clone();
}
}
Или вы можете заменить клонирование, используя "FromFile" -method, который автоматически создает новые экземпляры:
p.Image = Image.FromFile("Circulo1.png");
Нет причин вводить событие дважды. Ваш код действительно работает. Я думаю, может быть, у вас есть другие элементы управления в вашей форме, которые используют одно и то же событие. Просто убедитесь, что это событие используется только для изображений.
Другое дело: поставьте точку останова на событие и посмотрите, какие элементы управления отображаются в качестве отправителя. Это поможет вам решить вашу проблему.
Использовать свойство тегов "Изображения", чтобы понять, какой из них вводит событие:
for (int i = 0; i < 9; i++)
{
PicBox[i].Tag = i;
}
Когда код вводится в событие, вы можете посмотреть p.Tag, чтобы узнать, какой из них вызвал событие.
Попробуйте обновить графические ящики со встроенной функцией. Если это не решит проблему, установите свойство imagebox изображения равным null, затем обновите и установите нужное изображение.
Или вы пытаетесь установить событие click на странице дизайна вашего ide, привяжите его к той же функции (в данном случае Pictureboxes_click)