我的表单上有很多图像(PictureBoxes),点击它们之后会有一些操作,比如显示图像并禁止点击。如果我点击PictureBox1,它会在该框中显示图像,其余的框也是如此。所以基本上这些是相同的操作,唯一的区别是里面的数字,比如PictureBox16的数字= 16,这样我就可以在那个框中显示image16。
现在,我有24个这样的盒子,每个盒子都有独特的功能,有近100行代码 - 这意味着有2400行,而它可能是100.这太荒谬了。 在HTML和JS中,我会用同一个类来定位这些框,函数会读取“this.id”,因此我可以知道单击了哪个元素。我怎样才能在C#WFA中实现这样的目标?
此外,我想一次更改图像并启用图片框。现在就是这样:
PictureBox1.Image = Properties.Resources.img1; PictureBox1.Enabled = true;
...
PictureBox24.Image = Properties.Resources.img24; PictureBox24.Enabled = true;
有没有选择用for循环这样做,并将“i”的值传递给目标特定的PictureBox?
提前感谢任何建议。
EDIT 我将代码更改为:
for (int i = 0; i < 12; i++)
{
Control myImg = this.Controls["PictureBox" + i];
if (myImg != null)
{
myImg.Image = Properties.Resources.imgName;
myImg.Enabled = true;
}
}
但是“myImg”之后的“Image”有下划线,我收到以下错误:
CS1061'Control'不包含'Image'的定义,没有 扩展方法'Image'接受'Control'类型的第一个参数 可以找到(你错过了使用指令或程序集 引用?)
这很奇怪,因为这个说明工作正常
PictureBox1.Image = Properties.Resources.img1;
任何想法为什么会出现这样的错误?