【发布时间】:2011-01-18 13:35:21
【问题描述】:
我有表单,它有 1 个面板,面板有 0-N 个图片框 - 动态添加到面板中,但是如果我将鼠标悬停在图片框上并单击它,它不会触发任何操作。我的意思是当我点击 Panel 时,它会触发 click 方法,但是我如何确保那些 PictureBox 的行为也相同呢?
【问题讨论】:
我有表单,它有 1 个面板,面板有 0-N 个图片框 - 动态添加到面板中,但是如果我将鼠标悬停在图片框上并单击它,它不会触发任何操作。我的意思是当我点击 Panel 时,它会触发 click 方法,但是我如何确保那些 PictureBox 的行为也相同呢?
【问题讨论】:
由于图片框是动态添加的,因此您需要在代码中为点击事件附加事件处理程序。
在将它添加到控件集合之前执行类似的操作..
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
}
【讨论】:
如果你的PictureBoxes是动态添加到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")
{
...
}
}
你懂的……
【讨论】: