C# 连接字符串以生成Picturebox名称
我有很多这样命名的图片盒:PBr1_1,PBr1_2。。。PBr1_9 我想做一个循环C# 连接字符串以生成Picturebox名称,c#,string,C#,String,我有很多这样命名的图片盒: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(int i=0;iPBr1\u0,i=10=>PBr1\u10. 示例我在文本框中有值:0001011101-然后如果文
for (int i = 0; i < 10; i++)
{
if (Textbox.Text[i].ToString() == "1"){ "PBr1_"+"i".Tag = "cb.png";}
}
for(int i=0;i<10;i++)
{
if(Textbox.Text[i].ToString()=“1”){“PBr1”+“i”.Tag=“cb.png”;}
}
所以对于i=0=>PBr1\u0,i=10=>PBr1\u10.
示例我在文本框中有值:0001011101-然后如果文本框中的值为“1”,那么我想更改picturebox标记
如何自动化此过程,例如使用循环“for”您可以将图片框放入
列表中,并在列表中迭代
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";
}
var图片=新列表();
图片。添加(pic1);
图片。添加(pic2);
//...
对于(int i=0;i<10;i++)
{
if(Textbox.Text[i].ToString()=“1”)
图片[i].Tag=“cb.png”;
}
不支持示例中的动态变量名。创建一个包含图片框的数组(或列表),并在for循环中使用这些图片框
您也可以使用反射,但在我看来,最好不要在这种情况下使用反射。如果您使用的是WinForm
,您可以使用方法按名称定位控件
一旦你有了这个控件,你就可以很容易地更改任何属性了。我想你的控件是在WinForm(这个)上的,那些同名的都是pictureboxes。
如果是这样的话,就是这样----
for(int i=0;i<10;i++)
{
if(Textbox.Text[i].ToString()=“1”)
{
Control[]c=this.Controls.Find(“PBr1_”+i.ToString(),true);
如果(c!=null&&c.Length>0)c[0].Tag=“cb.png”;
}
}
Find返回控件数组
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";
}
}