我有多个图片框都添加到事件处理程序中,这是事件处理程序的方法:
private void Picturemethod(object sender, MouseEventArgs e)
这就是我将图片框添加到事件处理程序
的方式for (int j = 0; j < top.Length; j++)
{
top[j].MouseClick += new MouseEventHandler(Picturemethod);
}
所有图片框都在顶部数组中。 在我的方法中单击时,如何使图片框不可见?
答案 0 :(得分:1)
如果您要对MouseClick
执行的仅事件隐藏当前PictureBox
,则可以使用lambda表达式将其内联编写,并删除{ {1}}。
private void Picturemethod
替代语法,使用委托(匿名方法):
foreach (var t in top)
{
var t2 = t;
t.MouseClick += (s, a) => t2.Hide();
}
答案 1 :(得分:0)
您可以使用sender
参数获取触发事件的当前图片框。
private void Picturemethod(object sender, MouseEventArgs e)
{
var pBox = sender as PictureBox;
if(pBox != null)
{
pBox.Visible = false;
}
}
答案 2 :(得分:0)
您可以投射 object sender
到PictureBox
并设置Visibile
属性,如下所示:
private void Picturemethod(object sender, MouseEventArgs e)
{
if (sender is PictureBox) { ((PictureBox)sender).Visible = false; }
else { /* Do nothing or throw ArgumentException */ }
}