C# 在Visual Studio(c)中使用变量代替名称更改picturebox背景色

C# 在Visual Studio(c)中使用变量代替名称更改picturebox背景色,c#,.net,winforms,C#,.net,Winforms,我试图用一个10x10网格的空图片盒制作一个简单的游戏,我遇到了一个非常具体的问题 其思想是应用程序根据播放器输入进行计算,并更改网格中特定图片框的背景色。但这到底是怎么回事对这个问题并不重要 PictureBox被命名为pictureBox1、pictureBox2等,一直到100 我知道我可以用这行代码更改背景色: pictureBox1.BackColor = Color.FromArgb(int, int, int); 现在让我们假设应用程序返回变量int resultValue=25

我试图用一个10x10网格的空图片盒制作一个简单的游戏,我遇到了一个非常具体的问题

其思想是应用程序根据播放器输入进行计算,并更改网格中特定图片框的背景色。但这到底是怎么回事对这个问题并不重要

PictureBox被命名为pictureBox1、pictureBox2等,一直到100

我知道我可以用这行代码更改背景色:

pictureBox1.BackColor = Color.FromArgb(int, int, int);
现在让我们假设应用程序返回变量int resultValue=25,这意味着我希望pictureBox25更改其背景色。 现在,如果我可以这样写代码:

string pbName = "pictureBox" + resultValue.toString();

pbName.BackColor = Color.FromArgb(int, int, int);
…这样就不会有问题了。但是VisualStudio似乎不接受字符串变量来代替名称


是否有任何类型的变量可以接受,或者是否有其他方法可以实现我所需要的功能,而无需使用巨型if语句。

请参阅按名称查找控件。此外,这可能是制作此类游戏最不有效的方法。你真的应该自己画网格,这会比PictureBox控件更简单、更快…如果坚持基本设计,你应该在设置时将对pixtureboxes的引用放在2d数组中。使用DataGridView会更简单。
Control []controls=this.Controls.Find("pictureBox" + resultValue.ToString(), true);
        if (controls != null && controls.Length > 0)
        {
            foreach (Control control in controls)
            {
                if (control.GetType() == typeof(PictureBox))
                {
                    PictureBox pictureBox = control as PictureBox;
                    pictureBox.BackColor = Color.FromArgb(r, g, b);
                }
            }
        }