将多个元素/绑定元素定位到一个函数 - C#Windows窗体应用程序

时间:2017-08-17 09:09:20

标签: c# winforms

我的表单上有很多图像(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;

任何想法为什么会出现这样的错误?

0 个答案:

没有答案