Как получить событие на панели управления? - PullRequest
2 голосов
/ 18 января 2011

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

Ответы [ 2 ]

4 голосов
/ 18 января 2011

Поскольку графические блоки добавляются динамически, вам необходимо прикрепить обработчики событий для события click в вашем коде.

сделайте что-нибудь подобное перед тем, как добавить его в коллекцию элементов управления.

 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 голосов
/ 18 января 2011

Если ваши PictureBox добавляются в Panel динамически, то также необходимо добавить событие Click для PictureBox.

Обратите внимание, что вы можете обрабатывать все события Click 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")
            {
                ...
            }
        }

Вы поняли ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...