用循环填充数组

时间:2015-12-15 22:25:44

标签: c#

我想获得比现在更短的代码,但我不知道如何。

我现在所做的就像下面的代码一样。

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;
}

4 个答案:

答案 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
   }
}