无法更改PictureBox阵列的BackColor

时间:2016-09-13 17:14:00

标签: c# split backcolor

我正在尝试创建一个.txt文件,我可以使用我的程序打开它,并通过拆分它们将所有数字保存在两个不同的数组中。 但由于某种原因,顶部部分从不更改BackColor

以下是代码:

        PictureBox[,] Field = new PictureBox[4, 4];
        int[,] Block_Property = new int[4, 4];

        for (int x = 0; x < 4; x++)
        {
            for (int y = 0; y < 4; y++)
            {
                Field[x, y] = new PictureBox();
                Field[x, y].Size = new Size(64, 64);
                Field[x, y].Location = new Point(x * 64, y * 64);
                this.Controls.Add(Field[x, y]);
            }
        }

        string Text;
        int Zahler=0;

        using (StreamReader sr = new StreamReader("Level/1-1.txt"))
        {
            Text = sr.ReadToEnd();
        }

        string[] Feld = Text.Split(';');
        for(int x = 0; x < 4; x++)
        {
            for(int y = 0; y < 4; y++)
            {
                if(Feld[Zahler] == "1")
                {
                    Field[x, y].BackColor = Color.Black;
                }
                Zahler++;
                if (Feld[Zahler] == "1")
                {
                    Block_Property[x, y] = 1;
                }
                Zahler++;
            }
        }

这是.txt文件的外观:

1;1;1;1;1;1;1;1;     
1;1;1;1;1;1;1;1;    
1;1;1;1;1;1;1;1;      
1;1;1;1;1;1;1;1;

以下是我启动程序后的注意事项:

How it looks after I start the program

2 个答案:

答案 0 :(得分:0)

X应为Y

for (int y = 0; y < 4; y++)
            {
                for (int x = 0; x < 4; x++)
                {
                    if (Feld[Zahler] == "1")
                    {
                        Field[y, x].BackColor = Color.Black;
                    }
                    Zahler++;
                    if (Feld[Zahler] == "1")
                    {
                        Block_Property[y, x] = 1;
                    }
                    Zahler++;
                }
            }

答案 1 :(得分:0)

你可以试试这个,而不是硬编码数组的x和y,y和x需要切换

        for (int y = 0; y < Field.GetLength(0); y++)
        {
            for (int x = 0; x < Field.GetLength(1); x++)
            {
               if(Feld[Zahler] == "1")
               {
                  Field[x, y].BackColor = Color.Black;
               }

               Zahler++;

                if (Feld[Zahler] == "1")
                {
                  Block_Property[x, y] = 1;
                }

                 Zahler++;
            }
        }