C#用图片框反射

时间:2015-07-07 01:41:17

标签: c# oop reflection picturebox

我想做以下事情:

          string WhoIsTheSender="pictureBox1";

        switch (WhoIsTheSender)
        {
           case "pictureBox1":  
                    pictureBox1.Image = Properties.Resources.ledOff; 
                    break;
           case "pictureBox2":  
                    pictureBox2.Image = Properties.Resources.ledOff;
                    break;
            //....until case "pictureBox64":  pictureBox64.Image = Properties.Resources.ledOff;
                    break;
        }       

有没有办法让它更短?我如何使用反射?

string WhoIsTheSender="pictureBox1";
        WhoIsTheSender.Image = Properties.Resources.ledOff; //in this specific example WhoIsTheSender="pictureBox1";            

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

  

是的,这是一个事件,基本上我有64个图片框去参加同一个活动。我不想单独处理所有事件,所以我只有1个事件。

您需要的信息已在事件的sender参数中提供。

如果您确定sender始终是PictureBox,那么一行(非反射)将会执行:

(PictureBox(sender)).Image = Properties.Resources.ledOff;

如果您确定sender类型,请先测试它:

var picBox = sender as PictureBox;

if (picBox != null)
    picBox.Image = Properties.Resources.ledOff;