连接字符串以使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"?

连接字符串以使Picturebox成为名称

我假设您的控件在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方法按名称定位控件

一旦你有了控制权,你就可以很容易地更改任何属性