2012-03-05 52 views
0

我有很多这样命名pictureboxes的:PBr1_1,PBr1_2,... PBr1_9连接字符串,使PictureBox的名称

我想使循环

 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.

例如我在文本框中有价值:0001011101 - 那么如果文本框中的值是“1”,那么我想改变picturebox标签。

如何自动执行此过程,例如使用循环“for”?

回答

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"; 
    } 
} 
+0

找到控制 – Reniuz 2012-03-05 11:50:40

+0

@Reniuz返回数组,你是对的,太快了 – Steve 2012-03-05 11:52:30

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

不支持您的示例中的动态变量名称。

0

创建包含图片框的数组(或列表),并使用for循环中的图片框。

你也可以使用反射,但在我看来最好不要在这种情况下使用反射。

0

如果您正在使用WinForm可以使用Control.Find方法来定位名称

控制一旦你已经得到了你可以轻松地更改任何财产

相关问题