带有图片框的c#反射

本文关键字:反射 有图片 | 更新日期: 2023-09-27 18:01:22

我想做以下事情:

          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";            

提前感谢您的帮助!

带有图片框的c#反射

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

您需要的信息已经在事件的sender参数中可用。

如果您确定sender始终是PictureBox,那么一行(非反射)就可以了:

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

如果您确定sender类型,那么首先测试它:

var picBox = sender as PictureBox;
if (picBox != null)
    picBox.Image = Properties.Resources.ledOff;