如何在所有图片框点击的事件处理程序中呈现不可见的图片框?

时间:2014-02-08 17:49:12

标签: c#

我有多个图片框都添加到事件处理程序中,这是事件处理程序的方法:

private void Picturemethod(object sender, MouseEventArgs e)

这就是我将图片框添加到事件处理程序

的方式
for (int j = 0; j < top.Length; j++)
{
    top[j].MouseClick += new MouseEventHandler(Picturemethod);
}

所有图片框都在顶部数组中。 在我的方法中单击时,如何使图片框不可见?

3 个答案:

答案 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 senderPictureBox并设置Visibile属性,如下所示:

private void Picturemethod(object sender, MouseEventArgs e)
{
    if (sender is PictureBox) { ((PictureBox)sender).Visible = false; }
    else { /* Do nothing or throw ArgumentException */ }
}