我想获得比现在更短的代码,但我不知道如何。
我现在所做的就像下面的代码一样。
arrPictureBox[0] = picChair0;
arrPictureBox[1] = picChair1;
arrPictureBox[2] = picChair2;
arrPictureBox[3] = picChair3;
arrPictureBox[4] = picChair4;
arrPictureBox[5] = picChair5;
arrPictureBox[6] = picChair6;
arrPictureBox[7] = picChair7;
arrPictureBox[8] = picChair8;
arrPictureBox[9] = picChair9;
arrPictureBox[10] = picChair10;
arrPictureBox[11] = picChair11;
(pic)是一个图片框。
但我想要更少的代码,但我不知道是否可以通过循环(for loop)来实现这一点。
for (int i = 0 ; i < arrPictureBox.Length; i++)
{
arrPictureBox[i] = picChair + i;
}
答案 0 :(得分:4)
如果picChairN
是一个局部变量,那么你可以做任何事情来简化它,就像你想要的那样。你能做的最好的就是
arrPictureBox = new [] { picChair0, picChair1, picChair2, picChair3,
picChair4, picChair5, picChair6, picChair7,
picChair8, picChair9, picChair10, picChair11};
如果picChairN
是类成员(例如设计者创建的字段),那么可以使用反射,但考虑到已经拥有数组方法打字我没有看到太多的好处。
答案 1 :(得分:2)
让我们预测您已经WinForms
并且pictureBoxes
已经存在,那么您可以使用以下内容:
for (int i = 0; i < arrPictureBox.Length; i++)
{
arrPictureBox[i] = this.Controls["picChair" + i];
}
实际上是这样做的:
Control
(例如,PictureBox
)
修改强>
检查不存在的pictureBoxes
:
for (int i = 0 ; i < arrPictureBox.Length; i++)
{
var pb = this.Controls["picChair" + i] as PictureBox;
if (pb != null)
{
arrPictureBox[i] = pb;
}
}
答案 2 :(得分:0)
您可以使用如下所示的列表。
List<string> arrPictureBox = new List<string>();
for (int i = 0; i < 20; i++)
{
arrPictureBox.Add("picChair" + i);
}
var result = arrPictureBox.ToArray();
希望它有所帮助。
答案 3 :(得分:-1)
如果所有图片框都在同一个表单上并且是表单上的唯一图片框,则可以使用以下内容循环显示它们:
int x = 0;
foreach(Control c in this.Controls)
{
if(c is PictureBox)
{
arrPictureBox[x++] = c
}
}