如何在Panel Controls上接收活动?

时间:2011-01-18 13:35:21

标签: c# events

我有Form,它有1个Panel,Panel有0-N PictureBox - 动态添加到Panel中,但如果我将鼠标移到PictureBox上并单击它,它就不会触发任何动作。我的意思是当我点击Panel时,它会触发click方法,但我怎样才能确保那些PictureBox的行为方式相同呢?

2 个答案:

答案 0 :(得分:4)

由于图片框是以dinamically方式添加的,因此您需要为代码中的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
}

答案 1 :(得分:2)

您的PictureBox是否动态添加到Panel,还必须添加PictureBox的Click事件。

请注意,您可以在同一个处理程序中处理所有PictureBoxes Click事件:

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")
            {
                ...
            }
        }

你明白了......