2011-01-18 2 views
2

У меня есть форма, у нее есть 1 панель и панель с 0-N PictureBox - динамически добавляется в панель, но если я нахожу мышь над PictureBox и нажимаю на нее, она не срабатывает. Я имею в виду, когда я нажимаю на Panel, он запускает метод click, но как я могу убедиться, что те же PictureBox ведут себя одинаково?Как получить событие на панели управления?

ответ

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 
} 
+0

Вы имеете в виду: pbx.Click + = новый EventHandler (pbx_Click) ; – tzup

+0

О да, простите за эту неприятную ошибку. Просто обновил мой код thanx ... –

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 –