【发布时间】:2015-07-07 01:41:16
【问题描述】:
我想做以下事情:
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";
提前感谢您的帮助!
【问题讨论】:
-
是的,这是一个活动,基本上我有 64 个图片框用于同一个活动。我不想单独处理所有事件,所以我只有 1 个事件。单击特定框后,我将获得图片框的名称。假设我点击了一个名为“pictureBox1”的图片框。我得到了字符串本身,但现在我想用这个字符串来修改那个图片框图像。
-
((Control)sender).Name应该为您提供引发事件的图片框的名称。你也可以只做((Picturebox)sender).Image = Properties.Resources.ledOff;,我认为这里不需要反思。sender属性是对引发事件的控件的引用... -
对不起,我没有发布整个代码,只是简化版本。是的,我确实使用以下行获得了按钮的名称: string WhoIsTheSender = ((PictureBox)sender).Name;
-
除了使用字典之外,我没有办法使用图片框的名称作为修饰符吗?例如:字符串 WhoIsTheSender="pictureBox1"; WhoIsTheSender.Image = Properties.Resources.ledOff;
标签: c# oop reflection picturebox