我有很多以这种方式命名的图片盒:PBr1_1,PBr1_2,... PBr1_9
我想制作循环
for (int i = 0; i < 10; i++)
{
if (Textbox.Text[i].ToString() == "1"){ "PBr1_"+"i".Tag = "cb.png";}
}
所以for i=0 => PBr1_0, i=10 => Pbr1_10.
示例i在文本框中有值:0001011101 - 如果文本框中的值为“1”,那么我想更改图片框标记。
如何自动化此过程,例如使用循环“for”?
答案 0 :(得分:1)
我认为你的控件在WinForm(这个)上,而那个名字的控件都是图片盒。
如果是这样,那就是----
for (int i = 0; i < 10; i++)
{
if (Textbox.Text[i].ToString() == "1")
{
Control[] c = this.Controls.Find("PBr1_" + i.ToString(), true);
if(c != null && c.Length > 0) c[0].Tag = "cb.png";
}
}
答案 1 :(得分:0)
您可以将图片框放入List<PicutreBox>
并遍历列表。
var pictures = new List<PictureBox>();
pictures.Add(pic1);
pictures.Add(pic2);
//...
for (int i = 0; i < 10; i++)
{
if (Textbox.Text[i].ToString() == "1")
pictures[i].Tag = "cb.png";
}
不支持示例中的动态变量名称。
答案 2 :(得分:0)
创建一个包含图片框的数组(或列表),并在for循环中使用它们。
您也可以使用反射,但在我看来,最好不要在这种情况下使用反射。
答案 3 :(得分:0)
如果您使用的是WinForm
,则可以使用Control.Find方法按名称查找控件
获得控件后,您可以轻松更改任何属性