连接字符串以使Picturebox成为名称
本文关键字:Picturebox 字符串 连接 | 更新日期: 2023-09-27 18:26:48
我有很多这样命名的图片框: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.
例如,我在文本框中有值:0001011101-如果文本框中的值是"1",那么我想更改picturebox标记。
如何自动化这个过程,例如使用循环"for"?
我假设您的控件在WinForm(this)上,并且具有该名称的控件都是picturebox
如果是这样的话,那就是
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";
}
}
您可以将图片框放入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";
}
不支持示例中的动态变量名。
创建一个包含图片框的数组(或列表),并在for循环中使用这些图片框。
你也可以使用反射,但在我看来,在这种情况下最好不要使用反射。
如果使用WinForm
,可以使用Control.Find方法按名称定位控件
一旦你有了控制权,你就可以很容易地更改任何属性