У меня есть форма, у нее есть 1 панель и панель с 0-N PictureBox - динамически добавляется в панель, но если я нахожу мышь над PictureBox и нажимаю на нее, она не срабатывает. Я имею в виду, когда я нажимаю на Panel, он запускает метод click, но как я могу убедиться, что те же PictureBox ведут себя одинаково?Как получить событие на панели управления?
2
A
ответ
4
Поскольку графические ящики добавляются динамически, вам необходимо подключить обработчики событий для события click в вашем коде.
сделать Somthing, как это просто, прежде чем добавить его в коллекцию управления ..
PictureBox pbx = new PictureBox();
pbx.Click += new EventHandler(pbx_Click);
//Now assign other properties and then add it to control collection
//panel1.Controls.Add(pbx);
private void pbx_Click(object sender, EventArgs e)
{
//handle the click event here
}
2
ли ваши PictureBoxes добавляются динамически на панель, затем нажмите событие PictureBox также должны быть добавлены.
Обратите внимание, что вы можете обрабатывать все PictureBoxes Нажмите событие в тот же обработчик:
for (int i = 0; i < 10; i++)
{
PictureBox pb = new PictureBox();
pb.Name = "pb" + i;
pb.Click +=new EventHandler(pb_Click);
this.Controls.Add(pb);
}
void pb_Click(object sender, EventArgs e)
{
PictureBox pb = (PictureBox) sender;
if (pb.Name == "pb1")
{
...
}
}
Вы получаете идею ...
+0
+1 для этого нового EventHandler –
Вы имеете в виду: pbx.Click + = новый EventHandler (pbx_Click) ; – tzup
О да, простите за эту неприятную ошибку. Просто обновил мой код thanx ... –